九宫格填数
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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"); } } } }