您的位置:首页 > 其它

【ShawnZhang】带你看蓝桥杯——算法提高 勾股数

2016-12-07 15:16 246 查看
本道题非常的简单,主要的问题就是三条边的条件控制上

for(;a<500;a++){
for(b=a;b<500;b++){
for(c=5;c<500;c++){
………………
}
}
}


尤其是b=a的条件判断,导致我第一次输出的错误,不符合题目的要求

另外设置条件如果两边之和小于第三边,那么直接break跳出循环就好了,节省资源,以下是代码和题目

public class ADV187 {

public static void main(String[] args) {
// TODO Auto-generated method stub
/*
问题描述
  勾股数是一组三个自然数,a < b < c,以这三个数为三角形的三条边能够形成一个直角三角形
  输出所有a + b + c <= 1000的勾股数
  a小的先输出;a相同的,b小的先输出。
输出格式
  每行为一组勾股数,用空格隔开
样例输出
例如,结果的前三行应当是
3 4 5
5 12 13
6 8 10*/
int a=3,b=4,c=5;
for(;a<500;a++){ for(b=a;b<500;b++){ for(c=5;c<500;c++){

if(a+b<=c){
break;
}

if(a*a+b*b==c*c){
System.out.print(a+" "+b+" "+c);
System.out.println();
}
if(a+b+c>1000){
break;
}
}
}
}

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: