五家共井问题:五家共井,甲二绠(井绳)不足,如(接上)乙一绠;乙三绠不足,如丙一绠;丙四绠不足,如丁一绠;丁五绠不足,如戊一绠;戊六绠不足,如甲一绠,皆及。问井深、绠长各几何?(求一组最小整数解)
解答如下:
#include<iostream>
using namespace std;
int main()
{
int depth,a,b,c,d,e;
for(depth=1;;depth++)
for(a=1;a<=depth;a++)
for(b=1;b<=depth;b++)
for(c=1;c<=depth;c++)
for(d=1;d<=depth;d++)
for(e=1;e<=depth;e++)
if(2*a+b==depth && 3*b+c==depth && 4*c+d==depth && 5*d+e==depth && 6*e+a==depth) break;
cout << depth << a << b << c << d << e << endl;
return 0;
}
我调试之后算了半天没出结果,问题在哪???
问题下用break跳出的是最后一个循环还是全部的?
如果要跳出全部的难道要5个break么,我也试过了也不对啊?
你这是6个循环啦,得6个break,如果你非要这么做的话。
关键还是循环次数太多了,按照你的迭代方式,估计要等很久才能出结果吧。。你这是O(n^6)的复杂度了啊。。
不好意思继续追问。。应该是一个break就可以了的,因为再打break上去就显示 illegal break了。。可能问题是复杂度太高了吧,算了很久没出结果,呵呵
追答你要增加新的break就要加新的if,同时要用大括号把各个层次的for循环包括起来才行。直接加break肯定是不行的啊。。
但是我不是用break跳出循环了么,题目没有给循环终止条件啊?