怎样在数独中随机的位置产生随机数??
玩法:在9格宽×9格高的大九宫格中有9个3格宽×3格高的小九宫格,并提供一定数量的数字。根据这些数字,
利用逻辑和推理,在其他的空格上填入1到9的数字。每个数字在每个小九宫格内不能出现一样的数字,
每个数字在每行、每列也不能出现一样的数字。
在9*9的格子里面产生27个数,现在我程序可以暂时确定随机数的位置,但是要产生1-9的随机数而且每行每列每个宫格中数字都不重复,应该怎么办呀???
求各位高手指点一下,不甚感激!!!
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define SMAX 1024
main()
{
int i,j;
int m,n,p,Loc,a[27];
srand(time(0));
for(m=0;m <27;m++)
{
a[m]=rand()%81;
for(n=0;n <m;n++)/*判断是否和前面产生的数相同*/
if(a[m]==a[n]) {m--;break;}
}
for(m=0;m <27;m++)
{
j=a[m]%9;
i=(a[m]-j)/9;
p=(i/3)*3+j/3;//判断m处在第几块(宫)
Loc=a[m]+1;
printf("Loc:%2d i:%dj:%d m:%d\n",Loc,i,j,p);
}
// printf("%d ",a[m]+1);
printf("\n");
return 0;
}
/*a[9][9]中编号各宫i:0-8;且每宫内数组由a[(i/3)*3][(i%3)*3]->a[(i/3)*3+2][(i%3)*3+2]构成
其中i又可由i=m%3*3+n%3得到*/
/