将1、2、3、4、5、6、7、8、9九个数字分成三组,
来源:百度知道 编辑:UC知道 时间:2024/05/01 01:28:16
谢谢 你的做法太深奥了 能不能 用简单点的方法
#include <iostream>
#include <algorith>
#include <vector>
#include <cmath>
using namespace std;
void main()
{
vector<int> a;
double s1,s2,s3;
for (int i=0;i<9;++i){
a.push_back(i+1);
}
do{
s1=a[0]*100+a[1]*10+a[2];
s2=a[3]*100+a[4]*10+a[5];
s3=a[6]*100+a[7]*10+a[8];
if (fabs(sqrt(s1)-(int)sqrt(s1))<1e-5 &&
fabs(sqrt(s2)-(int)sqrt(s2))<1e-5 &&
fabs(sqrt(s3)-(int)sqrt(s3))<1e-5 )
{
printf("%d,%d,%d\n",(int)s1,(int)s2,(int)s3);
}
}while(next_permutation(a.begin(), a.end()));
}
输出:
361,529,784
361,784,529
529,361,784
529,784,361
784,361,529
784,529,361
也就是361,529,784这三组数
------------------
很深奥么?我这么写其实算简单了,说一下吧:
next_permutation(a.begin(), a.end())这个是标准库函数,专门生成全排列的,比如123的全排列有123,132,213,231,312,321这六个
,这个函数也可自己实现,不过那个