失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > 九宫格数独c语言编程 求用C语言编一个解九宫格数独的程序

九宫格数独c语言编程 求用C语言编一个解九宫格数独的程序

时间:2021-04-19 09:19:15

相关推荐

九宫格数独c语言编程 求用C语言编一个解九宫格数独的程序

满意答案

emhw637617

.12.30

采纳率:59%等级:12

已帮助:5603人

前两天刚写完,还没优化,已运行通过了.

晕,一维的好麻烦,这个也是碰巧前两天刚写好的,你看着自己修改下

#include

typedef struct

{

int line;

int row;

int num;

}Node;

int main()

{

/*

int a[9][9]={

{4,0,3,6,0,0,0,0,0},

{0,0,0,0,0,1,0,2,4},

{0,1,0,0,4,0,5,0,0},

{0,0,0,9,0,4,0,6,0},

{3,0,2,0,0,0,4,0,9},

{0,7,4,1,0,3,0,0,0},

{0,0,1,0,9,0,0,4,0},

{2,4,0,3,0,0,0,0,0},

{0,0,0,4,0,8,2,0,7}};

*/

int a[9][9]={

{0,0,0,8,0,0,0,6,0},

{8,7,0,0,0,0,0,0,0},

{2,9,0,0,4,1,0,0,5},

{0,0,5,7,0,0,0,0,9},

{0,2,0,0,0,0,0,1,0},

{9,0,0,0,0,4,3,0,0},

{7,0,0,6,1,0,0,9,8},

{0,0,0,0,0,0,0,5,2},

{0,6,0,0,0,9,0,0,0}};

/*

int a[9][9]={

{0,2,0,0,6,0,0,0,0},

{0,9,0,4,0,5,1,3,0},

{0,0,8,7,0,0,0,0,5},

{6,0,0,3,0,0,4,0,0},

{0,0,0,9,0,6,0,0,0},

{0,0,7,0,0,1,0,0,3},

{4,0,0,0,0,7,3,0,0},

{0,8,5,2,0,4,0,7,0},

{0,0,0,0,9,0,0,1,0}};

*/

/*

int a[9][9]={

{0,0,3,0,2,0,0,0,6},

{0,0,2,0,9,0,0,0,4},

{7,0,0,8,0,0,2,0,3},

{0,8,0,0,7,0,5,0,0},

{0,7,0,1,0,6,0,3,0},

{0,0,0,2,0,0,0,9,0},

{4,0,6,0,0,8,0,0,5},

{6,0,0,0,4,0,3,0,0},

{9,0,0,0,1,0,7,0,0}};

*/

int i,j,n,en,flag,y,k=0,x,qu,p,q;

Node b[70];

for(i=0;i<9;i++)

{

for(j=0;j<9;j++)

{

if(!a[i][j])

{

b[k].line=i;

b[k].row=j;

b[k].num=0;

k+=1;

}

}

}

en=k;

/*从b[0]开始试,若b[k].num>9,则k-1,否则k+1*/

for(k=0;k

{

++b[k].num;

i=b[k].line;

j=b[k].row;

a[i][j]=b[k].num;

n=0;

while(n<9&&b[k].num<=9)

{

if(n==i)

{

for(y=0;y<9;y++)

{

if(y==j)

continue;

if(a[n][y]==a[i][j])

flag=1;

}

}

else if(n==j)

{

for(y=0;y<9;y++)

{

if(y==i)

continue;

if(a[y][n]==a[i][j])

flag=1;

}

}

/*判断同一块中有没有相同值*/

qu=3*(i/3)+j/3;

switch(qu)

{

case 0:x=0;

y=0;

break;

case 1:x=0;

y=3;

break;

case 2:x=0;

y=6;

break;

case 3:x=3;

y=0;

break;

case 4:x=3;

y=3;

break;

case 5:x=3;

y=6;

break;

case 6:x=6;

y=0;

break;

case 7:x=6;

y=3;

break;

default :x=6;

y=6;

break;

}

p=x;

q=y;

for(;x

{

for(;y

{

if(x==i&&y==j)

continue;

if(a[x][y]==a[i][j])

{

flag=1;

break;

}

}

if(flag==1)

break;

}

if(flag==1)

{

a[i][j]=++b[k].num;

flag=0;

n=0;

continue;

}

n++;

}

if(b[k].num>9)

{

a[i][j]=b[k].num=0;

k--;

if(k<0)

{

printf("error!\r\n");

return -1;

}

}

else

k++;

}

for(i=0;i<9;i++)

{

for(j=0;j<9;j++)

{

printf("%d",a[i][j]);

}

printf("\r\n");

}

return 1;

}

00分享举报

如果觉得《九宫格数独c语言编程 求用C语言编一个解九宫格数独的程序》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。