将1、2、3、4、5、6、7、8、9九个数字分成三组,

来源:百度知道 编辑:UC知道 时间:2024/05/01 01:28:16
将1、2、3、4、5、6、7、8、9九个数字分成三组,每个数字只能用一次,即每组三个数不允许有重复的数字,也不许同其它组的三个数字重复,要求每组中的三位数整数都是某个整数的平方。 用c++ 来编
谢谢 你的做法太深奥了 能不能 用简单点的方法

#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这六个
,这个函数也可自己实现,不过那个

将1、2、3、4、5、6、7、8、9九个数字分成三组, .将数字1,2,3,4,5,6,7,8,9 将1,2,3,4,5,6,7,8,9这九个数填入方框中,使等式成立。 如何将"1+2+3*5+6*7"直接计算出结果??? 将正整数按第一排排列1,第二排排列2、3,第三排排列4、5、6…… 将1、2、3、4、5、6、7、8、9这9个数字填入括号内,组成3组数,不能重复! 请将1,2,3,4,5,6,7填入( )中,不能重复.( )( )( )乘2=( )( )( )( ) 将1,2,3,4,5,6,7,8,9添入o/oo+o/oo=o/oo,不得重复,并保持等式相等 现有9张卡片,正面分别写着1、2、3、4、5、6、7、8、9将正面朝下小红和小梅做游戏 将正整数按(1),(2,3),(4,5,6),(7,8,9,10)的形式排列,求第N项内个数的和>