第三题,用一个check函数来去除重复项,会使整个程序简单许多
当然,这样写就要求所有字母一一对应转换为数组的形式
(但我还是推崇这种解法!!!)
#include<stdio.h>
#define N 9
int check(int a[],int k)
{
int i;
for(i=0;i<k;i++)
{
if(a[i]==a[k])
{
return 0;
}
}
return 1;
}
int main()
{
int a[N],count=0;
for(a[0]=1;a[0]<=9;a[0]++)
{
for(a[1]=1;a[1]<=9;a[1]++)
{
if(check(a,1))
{
for(a[2]=1;a[2]<=9;a[2]++)
{
if(check(a,2)&&a[0]+a[1]+a[2]==15)
{
for(a[3]=1;a[3]<=9;a[3]++)
{
if(check(a,3))
{
for(a[4]=1;a[4]<=9;a[4]++)
{
if(check(a,4))
{
for(a[5]=1;a[5]<=9;a[5]++)
{
if(check(a,5)&&a[3]+a[4]+a[5]==15)
{
for(a[6]=1;a[6]<=9;a[6]++)
{
if(check(a,6)&&a[0]+a[3]+a[6]==15)
{
for(a[7]=1;a[7]<=9;a[7]++)
{
if(check(a,7)&&a[1]+a[4]+a[7]==15)
{
for(a[8]=1;a[8]<=9;a[8]++)
{
if(check(a,8)&&a[6]+a[7]+a[8]==15&&a[2]+a[5]+a[8]==15)
{
count++;
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
printf("%d",count);
return 0;
}