虚心请教各位大虾,为什么该成这样goto好象没作用一样输入错的也不能重新输入
#include"stdio.h"
int aaaa(int a[][9]);
main()
{int a[9][9],i,j,k;
char z;
zailai:
for(i=0;i<9;i++)
for(j=0;j<9;j++)
scanf("%d",&a[i][j]);
k=aaaa(a);
if(k) {for(i=0;i<9;i++)
{printf("\n");
for(j=0;j<9;j++)
printf("%d ",a[i][j]);
printf("\n");
}}
else
{
printf("shu ru you wu\n");
printf("shi fou yao cong lai:Y/N\n");
scanf("%c",&z);
if(z=='Y')
goto zailai;
}
getchar();
}
int aaaa(int a[][9])
{int i,j,t,k,*b,n,c[9];
for(i=0;i<9;i++)
for(j=0;j<8;j++)
for(k=j+1;k<9;k++)
{if(a[i][j]==a[i][k]) return 0;
if(a[j][i]==a[k][i]) return 0;}
for(n=0;n<3;n++)
{b=&a[0][0];b+=n*18;
for(t=0;t<3;t++)
{ b+=t*3;
for(i=0,k=0;i<9;i++)
{k++;
if(k%3==0) b+=6;
c[i++]=*(b++);}
for(i=0;i<8;i++)
for(j=i+1;j<9;j++)
if(c[i]==c[j]) return 0;}}
return 1;
}
大家玩过数独吗? 我想写一个数独的检查函数,但遇到了算法难题,大家帮帮忙:
我想问怎么写 检查数独3*3的每个区中的数字是否重复的函数 怎么写?
游戏玩法:
如果只是"检查数独3*3的每个区中的数字是否重复的函数",那还是比较简单的,
const int N=10;
int num[N];//num[i]表示数字i出现的次数
对3*3的每个区的数进行统计,
只有num[i]都为1的才合法.
总共也就9个区.
[此贴子已经被作者于2006-8-27 14:05:33编辑过]