parent
ccd1e6a787
commit
b1b63276e4
@ -0,0 +1,72 @@
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <time.h>
|
||||
|
||||
void print(int board[9][9]){
|
||||
printf("|-----------------------|\n");
|
||||
int i,j;
|
||||
for(i=0;i<9;i++){
|
||||
printf("| ");
|
||||
for(j=0;j<9;j++){
|
||||
if(board[i][j]==0) printf(". ");
|
||||
else printf("%d ",board[i][j]);
|
||||
if(j%3==2) printf("| ");
|
||||
}
|
||||
printf("\n");
|
||||
if(i%3==2){
|
||||
printf("|-----------------------|\n");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void fill(int board[9][9]){
|
||||
//每三行填充1~9
|
||||
int i,start;
|
||||
for(start=0;start<9;start+=3){
|
||||
int used[10]={}; //记录1~9数是否重复
|
||||
//每行填充3个数
|
||||
for(i=start;i<start+3;i++){
|
||||
int j=0;
|
||||
while(j<3){
|
||||
int num=rand()%9+1; //随机生成1~9之间的数
|
||||
//判断该数是否重复
|
||||
if(used[num]==0){
|
||||
used[num]=1;
|
||||
board[i][j]=num;
|
||||
j++;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//将每行的数打乱
|
||||
for(i=0;i<9;i++)
|
||||
{
|
||||
//随机选取三个位置放数
|
||||
int a,b,c;
|
||||
do{
|
||||
a=rand()%9;
|
||||
b=rand()%9;
|
||||
c=rand()%9;
|
||||
}while(a==b||a==c||b==c);
|
||||
|
||||
//将该行第a,b,c个数分别与前三个数交换
|
||||
int t[3],j;
|
||||
for(j=0;j<3;j++) t[j]=board[i][j];
|
||||
for(j=0;j<3;j++) board[i][j]=0;
|
||||
board[i][a]=t[0];
|
||||
board[i][b]=t[1];
|
||||
board[i][c]=t[2];
|
||||
}
|
||||
}
|
||||
|
||||
int main(){
|
||||
srand(time(NULL));
|
||||
|
||||
int board[9][9]={};
|
||||
fill(board);
|
||||
print(board);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
Loading…
Reference in new issue