九宫格填数

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

九宫格填数

15。

#include "stdio.h"

int num[10]; /*1-9的数字中填入九宫格的使用情况,1已经使用此数字,0没有用*/

int x[100][3], count=0; /*满足三个数和为15的三个数字,及个数*/

int sel[3][3]; /*填入九宫格的数字*/

main()

{

int i,j,k,l,m;

int cf=0; /*是否已经有重复的数字*/

for(i=1; i<10; i++) /*找满足三个数和为15的三个数字*/

for(j=1; j<10; j++)

for(k=1; k<10; k++)

if(i!=j && i!=k && j!=k && i+j+k==15)

{ x[count][0]=i;

x[count][1]=j;

x[count][2]=k;

count++;

}

printf("%d\n",count);

for(i=0; i

{

for(l=0; l<3; l++)sel[0][l]=x[i][l]; /*填入九宫格第1行*/

for(j=0; j

{

if(i==j)continue; /*如此组数据已填入第1行,看下一组数*/ for(l=1; l<10; l++)num[l]=0;

for(m=0; m<3; m++)num[sel[0][m]]=1;

cf=0;

for(l=0; l<3; l++)

{

sel[1][l]=x[j][l]; /*填入九宫格第2行*/

if(num[x[j][l]]!=1)num[x[j][l]]=1;

else cf=1; /*如果有重复的数字,cf=1*/

}

if(cf)continue; /*如果有重复的数字,进行下一组判断*/

for(k=0; k

{

if(i==k || j==k)continue; /*如此组数已填入第1、2行,看下一组*/ for(l=1; l<10; l++)num[l]=0;

for(l=0; l<2; l++)

for(m=0; m<3; m++)num[sel[l][m]]=1;

cf=0;

for(l=0; l<3; l++)

{

sel[2][l]=x[k][l]; /*填入九宫格第3行*/

if(num[x[k][l]]!=1)num[x[k][l]]=1;

else cf=1; /*如果有重复的数字,cf=1*/

}

if(cf)continue; /*如果有重复的数字,进行下一组判断*/

/*判断列和对角线和是否等于15*/

if(sel[0][0]+sel[1][0]+sel[2][0]!=15)continue;

if(sel[0][1]+sel[1][1]+sel[2][1]!=15)continue;

if(sel[0][2]+sel[1][2]+sel[2][2]!=15)continue;

if(sel[0][0]+sel[1][1]+sel[2][2]!=15)continue;

if(sel[0][2]+sel[1][1]+sel[2][0]!=15)continue;

for(l=0; l<3; l++) /*输出*/

printf("%d %d %d\n",sel[l][0],sel[l][1],sel[l][2]);

printf("\n\n");

}

} } }

相关文档
最新文档