读书人

帮忙修改 不知哪里有错 运行不出来 c语

发布时间: 2012-02-07 17:45:36 作者: rapoo

帮忙修改 不知哪里有错 运行不出来 c语言
将1至9这九个数分成三组,使每组中的三个数排成一个三位数的完全平方数,要求每个数必须用一次,而且仅用一次.

#include<stdio.h>
main()
{
int a[20],b[10];
int i,j,k,m,n,t,h;
for(j=0,i=11;i<=31;++i)
if(i%10!=0)
a[++j]=i*i;
printf("\n");
for(k=1;k<=j-2;++k)
for(m=k+1;k<=j-1;++m)
for(n=m+1;n<=j;++n){
b[1]=a[k]/100;
b[2]=(a[k]-b[1]*100)/10;
b[3]=a[k]%10;

b[4]=a[m]/100;
b[5]=(a[m]-b[4]*100)/10;
b[6]=a[m]%10;

b[7]=a[n]/100;
b[8]=(a[n]-b[7]*100)/10;
b[9]=a[n]%10;
for(t=1;t<=8;++t)
for(h=t+1;h<=9;++h)
if(b[t]==b[h])
goto abc;
printf("result:%5d%5d%5d\n",a[k],a[m],a[n]);
goto end;
abc:;
}
end:;
return(0);
}







[解决办法]

C/C++ code
#include <iostream>using namespace std;int sum(int m, int n, int l){    int result = 0;    int mk[10] = {0};    int k;    for (k=3;k;k--)    {        if (mk[n%10]) return -1;        else mk[n%10]=1, result += n%10, n /= 10;    }    for (k=3;k;k--)    {        if (mk[m%10]) return -1;        else mk[m%10]=1, result += m%10, m /= 10;    }    for (k=3;k;k--)    {        if (mk[l%10]) return -1;        else mk[l%10]=1, result += l%10, l /= 10;    }    return result;}int main(){    int mt[40] = {0};    int n;    for (n = 0; n * n < 1000; n++)        mt[n] = n * n;    for (int i = 10; i < n; ++i)        for (int j = i+1; j < n; ++j)            for (int k = j+1; k < n; ++k)            {                      if (sum(mt[i], mt[j], mt[k])==45)                          cout << mt[i] << '\t'                               << mt[j] << '\t'                               << mt[k] << '\t' << endl;            }    return 0;} 

读书人网 >C语言

热点推荐