将1~9分成3个一组,共三组,组内数字不能重复,组间的数字也不会重复.每组中的三个数字可任意排列,组成一个三位数。已知这个三位数都是完全平方数,求这三个数。用c++编程。
求好心人帮助。
//还是我自己发一个程序吧!有改进的帮个忙,或者有更好的 也可以帮帮忙 发一下
#include"iostream"
#include"cstdlib"
using namespace std;
int main()
{
int a1,a2,a3,i,j,k,m,n,c1,c2,c3,t,t1,x,y;
for(a1=11;a1<=31;a1++)
for(a2=11;a2<=31;a2++)
for(a3=11;a3<=31;a3++)
{
i=a1*a1;
j=a2*a2;
k=a3*a3;//找出所有是完全平方数的三位数
char b[4],c[4],d[4];
itoa(i,b,10);
itoa(j,c,10);
itoa(k,d,10);//将符合条件的三位数拆分成个体
t=-1;
t1=-1;
for(m=0;m<=2;m++)
{
for(n=0;n<=2;n++)
{
if(b[m]==c[n]||b[m]==d[n]||c[m]==d[n])//筛选出三个三位数之间任何一个数不能相等的情况
{t=1;
break; }
}
}
for(x=0;x<2;x++)
{
for(y=x+1;y<=2;y++)
{
if(b[x]==b[y]||c[x]==c[y]||d[x]==d[y])//筛选出三位数内部不等的情况
{ t1=1;
break;} }}
if(t1==-1&&t==-1&&i<j&&j<k)//同时满足以上情况
cout<<i<<" "<<j<<" "<<k<<endl;//输出结果361 529 784}}
你能帮我用c++程序编下吗?我是初学者,不会这东西
追答做为一个初学者,如果没有毅力啃骨头,我看不学也罢。方法给你了,如何去编程是自己的事了。
追问关键这道题我已经搞了一天了,只用了一个最笨的方法做出来,我想知道灵活点得办法
追答这种题,没有灵活的办法,就是穷举法。