| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 518 人关注过本帖
标题:[求助]无限的路
只看楼主 加入收藏
zhanghuan_10
Rank: 1
等 级:新手上路
威 望:2
帖 子:751
专家分:0
注 册:2006-10-25
收藏
 问题点数:0 回复次数:5 
[求助]无限的路

http://acm.hdu.edu.cn/showproblem.php?pid=2073


自己做了一下,我自己找不到是那里错了,大家看一下这题有什么好方法吗?
我把自己的代码贴在了下面!
#include <stdio.h>
#include <math.h>

int main(void)
{
long n, x1, x2, y1, y2, i, j, he1, he2, temp, temp1, temp2;
double sum;

scanf("%ld", &n);
for(i = 0;i < n;i ++)
{
sum = 0;
scanf("%ld%ld%ld%ld", &x1, &y1, &x2, &y2);
he1 = x1 + y1;
he2 = x2 + y2;

if(he1 > he2)
{
temp = he1;
he1 = he2;
he2 = temp;

temp1 = x1;
x1 = x2;
x2 = temp1;

temp2 = y1;
y1 = y2;
y2 = temp2;
}

for(j = he2;j > he1;j --)
{
sum += sqrt(j * j + (j - 1) * (j - 1));
}
if(he1 != he2)
sum += ((he1 - x1 + x2) * sqrt(2));
else
sum += (fabs(x1 - x2) * sqrt(2));
printf("%.3lf\n", sum);

}
return 0;
}

[此贴子已经被作者于2007-2-1 6:06:43编辑过]

搜索更多相关主题的帖子: blank include double target 
2007-02-01 05:53
zhanghuan_10
Rank: 1
等 级:新手上路
威 望:2
帖 子:751
专家分:0
注 册:2006-10-25
收藏
得分:0 
99 99 9 9
就是这组测试数据不对.

该学习了。。。
2007-02-01 05:59
卧龙孔明
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:59
帖 子:3872
专家分:684
注 册:2006-10-13
收藏
得分:0 
用勾股定理求

My Blog: www.aiexp.info
虽然我的路是从这里开始的,但是这里不再是乐土.感谢曾经影响过,引导过,帮助过我的董凯,飞燕,leeco,starwing,Rockcarry,soft_wind等等等等.别了,BCCN.
2007-02-01 07:13
Arlyn
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2007-1-31
收藏
得分:0 
这个题不仅算相邻两点之间的折线长啊,还有间隔点的情况啊,这个时候用勾股定理很麻烦啊,要算很多次的。。。

2007-02-01 09:33
zhanghuan_10
Rank: 1
等 级:新手上路
威 望:2
帖 子:751
专家分:0
注 册:2006-10-25
收藏
得分:0 
我的思路是这样的:在斜线上的横坐标和纵坐标之和是相等的(比如(0,1)和(1,0)),在给定的两点(比如(0,0)和(0,1))算其和,判断这两条斜线之间有多少条斜线,用勾股定理,其他的就算算一共有多少段,其长度都是根号2,两部分长度加在一起就是总的长度!

该学习了。。。
2007-02-03 21:41
zhanghuan_10
Rank: 1
等 级:新手上路
威 望:2
帖 子:751
专家分:0
注 册:2006-10-25
收藏
得分:0 
红色字体的地方错了!现在过了!
[CODE]

#include <stdio.h>
#include <math.h>

int main(void)
{
int n, x1, x2, y1, y2, i, j, he1, he2, temp, temp1, temp2;
double sum;

scanf("%d", &n);
for(i = 0;i < n;i ++)
{
sum = 0;
scanf("%d%d%d%d", &x1, &y1, &x2, &y2);
he1 = x1 + y1;
he2 = x2 + y2;

if(he1 > he2)
{
temp = he1;
he1 = he2;
he2 = temp;

temp1 = x1;
x1 = x2;
x2 = temp1;

temp2 = y1;
y1 = y2;
y2 = temp2;
}

for(j = he2;j > he1;j --)
{
sum += sqrt(j * j + (j - 1) * (j - 1));
}
if(he1 != he2)
sum += ((he1 - x1 + x2 + (he2 - he1 - 1) * (he1 + 1 + he2 -1) / 2) * sqrt(2));
else
sum += (fabs(x1 - x2) * sqrt(2));
printf("%.3lf\n", sum);

}

return 0;
}


[/CODE]

该学习了。。。
2007-02-04 06:13
快速回复:[求助]无限的路
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.019865 second(s), 10 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved