69,373
社区成员
发帖
与我相关
我的任务
分享
#include<stdio.h>
int main()
{
int a[10],i,total=0,book[10],sum;
//这里用a[1]-a[9]代表上一算法中的a~j
for (a[1]=1;a[1]<=9;a[1]++)
for (a[2]=0;a[2]<=9;a[2]++)
for (a[3]=0;a[3]<=9;a[3]++)
for (a[4]=1;a[4]<=9;a[4]++)
for (a[5]=0;a[5]<=9;a[5]++)
for (a[6]=0;a[6]<=9;a[6]++)
for (a[7]=1;a[7]<=9;a[7]++)
for (a[8]=0;a[8]<=9;a[8]++)
for (a[9]=0;a[9]<=9;a[9]++)
{
for(i=1;i<=9;i++)//初始化book数组
book[i]=0;
for(i=1;i<=9;i++)
book[a[i]]=1;
//统计出现多少个不同的数
sum=0;
for(i=1;i<=9;i++)
sum+=book[i];
//如果出现9个不同的数,并且满足等式条件,则输出
if(sum==9 && a[1]*100+a[2]*10+a[3]+a[4]*100+a[5]*10+a[6]
==a[7]*100+a[8]*10+a[9])
{
total++;
printf("%d%d%d+%d%d%d=%d%d%d\n",a[1],a[2],a[3],a[4],a[5],a[6],a[7],a[8],a[9]);
}
}
printf("total=%d",total/2);//除2抛出重复的情况统计
getchar();getchar();
return 0;
}
if((a[0] * 100 + a[1] * 10 + a[2] + a[3] * 100 + a[4] * 10 + a[5]) == (a[6] * 100 + a[7] * 10 + a[8]) && a[0] != 0 && a[3] != 0 && (a[0] * 100 + a[1] * 10 + a[2] <= 500))
{
count ++;
}
设置全局的count,在这个判断里,如果进入这个判断就将count++;void fun(int *p,int c,short& wFlag,unsigned int& nCount)
{
for (int i = 0; i < 10; ++ i)
{
short f = 1 << i;
if ((wFlag & f) == 0)
{
p[c] = i;
if (c == 8)
{
if (p[0]*100 + p[1]*10 + p[2] + p[3]*100 + p[4]*10 + p[5] == p[6]*100 + p[7]*10 + p[8])
{
++ nCount;
printf("%d,%d,%d,%d,%d,%d,%d,%d,%d\n",p[0],p[1],p[2],p[3],p[4],p[5],p[6],p[7],p[8]);
}
return;
}
else
{
wFlag |= f;
fun(p,c+1,wFlag,nCount);
wFlag &= (~f);
}
}
}
}
int main()
{
int p[9];
short wFalg = 0;
unsigned int nCount = 0;
for (int i = 0; i < 10; ++ i)
{
p[0] = i;
wFalg = 1;
fun(p,1,wFalg,nCount);
}
return 0;
}
#include <stdlib.h>
#include <stdio.h>
void swap(int *a, int *b)
{
int tmp = *a;
*a = *b;
*b = tmp;
}
int all(int m, int a[], int num)
{
int i = 0;
if(m == 10)
{
if((a[0] * 100 + a[1] * 10 + a[2] + a[3] * 100 + a[4] * 10 + a[5]) == (a[6] * 100 + a[7] * 10 + a[8]) && a[0] != 0 && a[3] != 0 && (a[0] * 100 + a[1] * 10 + a[2] <= 500))
{
printf("%8d : ", num);
for(i = 0; i < 3; i ++)
{
printf("%d ", a[i]);
}
printf("+ ");
for(i = 3; i < 6; i ++)
{
printf("%d ", a[i]);
}
printf("= ");
for(i = 6; i < 9; i ++)
{
printf("%d ", a[i]);
}
printf("\n");
}
return ++ num;
}
for(i = m; i < 10; i ++)
{
swap(&a[i], &a[m]);
num = all(m + 1, a, num);
swap(&a[i], &a[m]);
}
return num;
}
int main()
{
int a[10] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
all(0, a, 0);
}