我认为二楼的算法不是很好
虽然这么做问题不大,但是计算机的负担很大
如果将数字分成3个部分1~3,4~6,7~9进行排列这样好象会好些
一家之言,仅供参考
至于代码,如果晚上有时间我会试试,不知道可不可以写的出来
下面是这道题的C++ 代码:
#include <iostream> #include <algorithm> using namespace std;
int main() { int num[9] = {1,2,3,4,5,6,7,8,9};
sort(num, num+9); do { int sum1 = num[0] + num[1] + num[2]; int sum2 = num[3] + num[4] + num[5]; if(sum1 == sum2) { int sum3 = num[6] + num[7] + num[8]; if(sum2 == sum3) { int sum4 = num[0] + num[3] + num[6]; if(sum3 == sum4) { int sum5 = num[1] + num[4] + num[7]; if(sum4 == sum5) { int sum6 = num[2] + num[5] + num[8]; if(sum5 == sum6) { int sum7 = num[2] + num[4] + num[6]; if(sum6 == sum7) { int sum8 = num[0] + num[4] + num[8]; if(sum7 == sum8) { cout<<num[0]<<num[1]<<num[2]<<endl; cout<<num[3]<<num[4]<<num[5]<<endl; cout<<num[6]<<num[7]<<num[8]<<endl; cout<<endl; } } } } } } } }while (next_permutation(num, num+9));
return 0; }
回kai
我也编过类试的代码但不成功。顺便问一下你用VC还是用别的什么?
[此贴子已经被作者于2004-05-20 12:34:13编辑过]
我用的是VC, 不过这应该在Dev 下也能运行的。
如果你再Dev 下运行,在 return 0; 之前,加一条语句,system("pause");
否则你看不到运行结果。
另外添加一条头文件 #include <stdlib.h>
jzh2004
你有更好的方法就拿上来说一下吧