其他答案
这个方法比较笨,不能能运行,测试过了,暂时没想到比较好的办法
#include <stdio.h>
int data_check(int a, int b, int c)
{
int data[10] = {0};
int tmp = 0;
tmp = a / 100;
data[tmp]++;
tmp = (a % 100) / 10;
data[tmp]++;
tmp = a % 10;
data[tmp]++;
tmp = b / 100;
data[tmp]++;
tmp = (b % 100) / 10;
data[tmp]++;
tmp = b % 10;
data[tmp]++;
tmp = c / 1000;
data[tmp]++;
tmp = (c % 1000) / 100;
data[tmp]++;
tmp = (c % 100) / 10;
data[tmp]++;
tmp = c % 10;
data[tmp]++;
for (tmp = 0; tmp < 10; tmp++)
if (data[tmp] != 1)
return 0;
printf(" %d %d %d\n", a, b, c);
return 1;
}
int main(void)
{
int a = 0, b = 0, c = 0;
int total = 0;
for (a = 100; a <= 999; a++)
for (b = 100; b <= 999; b++)
{
if((a + b) / 1000)
{
total += data_check(a, b, a + b);
}
}
printf("Total: %d\n", total);
return 0;
}
回答人的补充
2009-06-26 18:51
有点错,
最后加一句 total /= 2; 就可以了
郭子
回答采纳率:20.0%
2009-06-26 18:45
#include<iostream>
using namespace std;
long i,a[20],ans;
bool hash[20];
void print()
{
long i;
for (i=1; i<=3; i++)
cout<<a[i];
cout<<'+';
for (i=4; i<=6; i++)
cout<<a[i];
cout<<'=';
for (i=7; i<=10; i++)
cout<<a[i];
cout<<endl;
}
void search(long t)
{
long i;
if (t==11)
{
long x=a[1]*100+a[2]*10+a[3],y=a[4]*100+a[5]*10+a[6],z=a[7]*1000+a[8]*100+a[9]*10+a[10];
if (x+y==z)
{
print();
ans++;
}
}
for (i=0; i<=9; i++)
{
if (hash[i] && !((t==1 || t==4 || t==7) && i==0))
{
a[t]=i; hash[i]=false;
search(t+1);
hash[i]=true;
}
}
}
int main()
{
for (i=0; i<=9; i++)
hash[i]=true;
search(1);
cout<<"共有"<<ans<<"个。"<<endl;
int cici;
cin>>cici;
return 0;
}
匿名
回答采纳率:18.8%
2009-06-26 18:55
#include<iostream>
using namespace std;
long i,a[20],ans;
bool hash[20];
void print()
{
long i;
for (i=1; i<=3; i++)
cout<<a[i];
cout<<'+';
for (i=4; i<=6; i++)
cout<<a[i];
cout<<'=';
for (i=7; i<=10; i++)
cout<<a[i];
cout<<endl;
}
void search(long t)
{
long i;
if (t==11)
{
long x=a[1]*100+a[2]*10+a[3],y=a[4]*100+a[5]*10+a[6],z=a[7]*1000+a[8]*100+a[9]*10+a[10];
if (x+y==z)
{
print();
ans++;
}
}
for (i=0; i<=9; i++)
{
if (hash[i] && !((t==1 || t==4 || t==7) && i==0))
{
a[t]=i; hash[i]=false;
search(t+1);
hash[i]=true;
}
}
}
int main()
{
for (i=0; i<=9; i++)
hash[i]=true;
search(1);
cout<<"共有"<<ans<<"个。"<<endl;
int cici;
cin>>cici;
return 0;
}
ㄣ依じ☆ve戀
回答采纳率:34.1%
2009-06-26 18:59
#include <stdio.h>
int main()
{
int i1,i2,i3,i4,i5,i6,i7,i8,i0,i9;
int a,b,c,cnt;
cnt=0;
for(i0=1;i0<10;i0++)
{
for(i1=0;i1<10;i1++)
{
if(i1==i0)
continue;
for(i2=0;i2<10;i2++)
{
if(i2==i0||i2==i1)
continue;
a=i0*100+i1*10+i2;
for(i3=1;i3<10;i3++)
{
if(i3==i0||i3==i1||i3==i2)
continue;
for(i4=0;i4<10;i4++)
{
if(i4==i0||i4==i1||i4==i2||i4==i3)
continue;
for(i5=0;i5<10;i5++)
{
if(i5==i0||i5==i1||i5==i2||i5==i3||i5==i4)
continue;
b=i3*100+i4*10+i5;
for(i6=1;i6<10;i6++)
{
if(i6==i0||i6==i1||i6==i2||i6==i3||i6==i4||i6==i5)
continue;
for(i7=0;i7<10;i7++)
{
if(i7==i0||i7==i1||i7==i2||i7==i3||i7==i4||i7==i5||i7==i6)
continue;
for(i8=0;i8<10;i8++)
{
if(i8==i0||i8==i1||i8==i2||i8==i3||i8==i4||i8==i5||i8==i6||i8==i7)
continue;
for(i9=0;i9<10;i9++)
{
if(i9==i0||i9==i1||i9==i2||i9==i3||i9==i4||i9==i5||i9==i6||i9==i7||i9==i8)
continue;
c=i9+i8*10+i7*100+i6*1000;
if(c==a+b)
{
printf("%d+%d=%d\n",a,b,c);
cnt++;
}
}
}
}
}
}
}
}
}
}
}
printf("共有%d种组合\n",cnt);
return 0;
}
Vito
回答采纳率:31.6%
2009-06-26 19:00