|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
// 这是答案的:
// m = a*1000+b*100+c*10+d;
// n = a*1000+b*100+e*10+d;
// s = e*10000+d*1000+c*100+a*10+d;
// if(s == m+n)
// printf("兵=%d,炮=%d,马=%d,卒=%d,车=%d\n",a,b,c,d,e);
// 这是我的:
// m = b*1000+d*100+c*10+a;
// n = b*1000+d*100+e*10+a;
// s = e*10000+a*1000+c*100+b*10+a;
// if(s == m+n)
// printf("车=%d,炮=%d,马=%d,兵=%d,卒=%d\n",e,d,c,b,a);
// 下面是源代码 换上答案的就能运行
#include<stdio.h>
#include<math.h>
int main()
{
int x[10]={1,1,1,1,1,1,1,1,1,1};
int a, b, c, d, e, m, n, s, i;
for( a = 1; a <= 9; a++)
{
x[a] = 0;
for(b = 0; b <= 9; b++)
if(x[b])
{
x[b]=0;
for(c = 0; c <= 9; c++)
if(x[c])
{
x[c]=0;
for(d = 0; d <= 9; d++)
if(x[d])
{
x[d]=0;
for(e = 0; e <= 9; e++)
if(x[e])
{
m = b*1000+d*100+c*10+a;
n = b*1000+d*100+e*10+a;
s = e*10000+a*1000+c*100+b*10+a;
if(s == m+n)
printf("车=%d,炮=%d,马=%d,兵=%d,卒=%d\n",e,d,c,b,a);
}
x[d] = 1;
}
x[c] = 1;
}
x[b] = 1;
}
x[a] = 1;
}
}
本帖最后由 额外减小 于 2022-8-9 01:02 编辑
我懂了,这是因为你的a没有循环过0这个数字 ,而答案中a刚好为0 #include<stdio.h>
#include<math.h>
int main()
{
int x[10]={1,1,1,1,1,1,1,1,1,1};
int a, b, c, d, e, m, n, s, i;
for( a = 0; a <= 9; a++)
{
x[a] = 0;
for(b = 0; b <= 9; b++)
{
if(x[b])
{
x[b]=0;
for(c = 0; c <= 9; c++)
{
if(x[c])
{
x[c]=0;
for(d = 0; d <= 9; d++)
{
if(x[d])
{
x[d]=0;
for(e = 0; e <= 9; e++)
{
if(x[e])
{
m = b*1000+d*100+c*10+a;
n = b*1000+d*100+e*10+a;
s = e*10000+a*1000+c*100+b*10+a;
if(s == m+n)
printf("车=%d,炮=%d,马=%d,兵=%d,卒=%d\n",e,d,c,b,a);
}
}
x[d] = 1;
}
}
x[c] = 1;
}
}
x[b] = 1;
}
}
x[a] = 1;
}
}
把第1个循环的初始化部分改为a=0即可
|
|