(编译运行多次才会成功显示一次,大部分概率控制台无显示)
是否是因为while循环的if判断条件太多导致生成随机数的数目过多导致控制台无显示?
#include <iostream>
#include <stdlib.h>
#include <time.h>
using namespace std;
int main()
{
srand((unsigned int)time(0)); //用 srand 修改种子
int a,r;
int aa=0;
int num1[9]={1,2,3,4,5,6,7,8,9};
int num2[9]={1,2,3,4,5,6,7,8,9};
int num3[9]={1,2,3,4,5,6,7,8,9};
int num4[9]={1,2,3,4,5,6,7,8,9};
int num5[9]={1,2,3,4,5,6,7,8,9};
int num6[9]={1,2,3,4,5,6,7,8,9};
int num7[9]={1,2,3,4,5,6,7,8,9};
int num8[9]={1,2,3,4,5,6,7,8,9};
int array[9][9]; //生成9*9的数独棋盘
/* 第一行*/
for(int i=0; i<9; i++)
{
r=rand()%(9-i); //生成随机数
array[0][aa]=num1[r];
for(int j=r;j<9;j++)
num1[j]=num1[j+1];
aa++;
}
aa=0;
/*第二行*/
for(int i=0; i<3; i++)
{
while(true){
r=rand()%(9-i); //生成随机数
if(num2[r]!=array[0][0]&&num2[r]!=array[0][1]&&num2[r]!=array[0][2])
break;
}
array[1][aa]=num2[r];
for(int j=r;j<9;j++)
num2[j]=num2[j+1];
aa++;
}
for(int i=3; i<6; i++)
{
while(true){
r=rand()%(9-i); //生成随机数
if(num2[r]!=array[0][3]&&num2[r]!=array[0][4]&&num2[r]!=array[0][5])
break;
}
array[1][aa]=num2[r];
for(int j=r;j<9;j++)
num2[j]=num2[j+1];
aa++;
}
for(int i=6; i<9; i++)
{
while(true){
r=rand()%(9-i); //生成随机数
if(num2[r]!=array[0][6]&&num2[r]!=array[0][7]&&num2[r]!=array[0][8])
break;
}
array[1][aa]=num2[r];
for(int j=r;j<9;j++)
num2[j]=num2[j+1];
aa++;
}
aa=0;
/*第三行*/
for(int i=0; i<3; i++)
{
while(true){
r=rand()%(9-i); //生成随机数
if(num3[r]!=array[0][0]&&num3[r]!=array[0][1]&&num3[r]!=array[0][2]
&&num3[r]!=array[1][0]&&num3[r]!=array[1][1]&&num3[r]!=array[1][2])
break;
}
array[2][aa]=num3[r];
for(int j=r;j<9;j++)
num3[j]=num3[j+1];
aa++;
}
for(int i=3; i<6; i++)
{
while(true){
r=rand()%(9-i); //生成随机数
if(num3[r]!=array[0][3]&&num3[r]!=array[0][4]&&num3[r]!=array[0][5]
&&num3[r]!=array[1][3]&&num3[r]!=array[1][4]&&num3[r]!=array[1][5])
break;
}
array[2][aa]=num3[r];
for(int j=r;j<9;j++)
num3[j]=num3[j+1];
aa++;
}
for(int i=6; i<9; i++)
{
while(true){
r=rand()%(9-i); //生成随机数
if(num3[r]!=array[0][6]&&num3[r]!=array[0][7]&&num3[r]!=array[0][8]
&&num3[r]!=array[1][6]&&num3[r]!=array[1][7]&&num3[r]!=array[1][8])
break;
}
array[2][aa]=num3[r];
for(int j=r;j<9;j++)
num3[j]=num3[j+1];
aa++;
}
aa=0;
/*第四行*/
for(int i=0; i<9; i++)
{
while(true){
r=rand()%(9-i); //生成随机数
if(num4[r]!=array[0][i]&&num4[r]!=array[1][i]&&num4[r]!=array[2][i])
break;
}
array[3][aa]=num4[r];
for(int j=r;j<9;j++)
num4[j]=num4[j+1];
aa++;
}
aa=0;
/*第五行*/
for(int i=0; i<3; i++)
{
while(true){
r=rand()%(9-i); //生成随机数
if(num5[r]!=array[0][i]&&num5[r]!=array[1][i]&&num5[r]!=array[2][i]
&&num5[r]!=array[3][0]&&num5[r]!=array[3][1]&&num5[r]!=array[3][2])
break;
}
array[4][aa]=num5[r];
for(int j=r;j<9;j++)
num5[j]=num5[j+1];
aa++;
}
for(int i=3; i<6; i++)
{
while(true){
r=rand()%(9-i); //生成随机数
if(num5[r]!=array[0][i]&&num5[r]!=array[1][i]&&num5[r]!=array[2][i]
&&num5[r]!=array[3][3]&&num5[r]!=array[3][4]&&num5[r]!=array[3][5])
break;
}
array[4][aa]=num5[r];
for(int j=r;j<9;j++)
num5[j]=num5[j+1];
aa++;
}
for(int i=6; i<9; i++)
{
while(true){
r=rand()%(9-i); //生成随机数
if(num5[r]!=array[0][i]&&num5[r]!=array[1][i]&&num5[r]!=array[2][i]
&&num5[r]!=array[3][6]&&num5[r]!=array[3][7]&&num5[r]!=array[3][8])
break;
}
array[4][aa]=num5[r];
for(int j=r;j<9;j++)
num5[j]=num5[j+1];
aa++;
}
aa=0;
/*第六行*//*
for(int i=0; i<3; i++)
{
while(true){
r=rand()%(9-i); //生成随机数
if(num6[r]!=array[0][i]&&num6[r]!=array[1][i]&&num6[r]!=array[2][i]&&num6[r]!=array[3][i]&&num6[r]
&&num6[r]!=array[4][0]&&num6[r]!=array[4][1]&&num6[r]!=array[4][2]&&num6[r]!=array[3][0]&&num6[r]!=array[3][1]&&num6[r]!=array[3][2])
break;
}
array[5][aa]=num6[r];
for(int j=r;j<9;j++)
num6[j]=num6[j+1];
aa++;
}
for(int i=3; i<6; i++)
{
while(true){
r=rand()%(9-i); //生成随机数
if(num6[r]!=array[0][i]&&num6[r]!=array[1][i]&&num6[r]!=array[2][i]&&num6[r]!=array[3][i]
&&num6[r]!=array[4][3]&&num6[r]!=array[4][4]&&num6[r]!=array[4][5]&&num6[r]!=array[3][3]&&num6[r]!=array[3][4]&&num6[r]!=array[3][5])
break;
}
array[5][aa]=num6[r];
for(int j=r;j<9;j++)
num6[j]=num6[j+1];
aa++;
}
for(int i=6; i<9; i++)
{
while(true){
r=rand()%(9-i); //生成随机数
if(num6[r]!=array[0][i]&&num6[r]!=array[1][i]&&num6[r]!=array[2][i]&&num6[r]!=array[3][i]
&&num6[r]!=array[4][6]&&num6[r]!=array[4][7]&&num6[r]!=array[4][8]&&num6[r]!=array[3][6]&&num6[r]!=array[3][7]&&num6[r]!=array[3][8])
break;
}
array[5][aa]=num6[r];
for(int j=r;j<9;j++)
num6[j]=num6[j+1];
aa++;
}
aa=0; */
/*第七行*//*
for(int i=0; i<3; i++)
{
while(true){
r=rand()%(9-i); //生成随机数
if(num7[r]!=array[0][i]&&num7[r]!=array[1][i]&&num7[r]!=array[2][i]&&num7[r]!=array[3][i]&&num7[r]!=array[3][i]&&num7[r]!=array[4][i]&&num7[r]!=array[5][i])
break;
}
array[6][aa]=num7[r];
for(int j=r;j<9;j++)
num7[j]=num7[j+1];
aa++;
}
for(int i=3; i<6; i++)
{
while(true){
r=rand()%(9-i); //生成随机数
if(num7[r]!=array[0][i]&&num7[r]!=array[1][i]&&num7[r]!=array[2][i]&&num7[r]!=array[3][i]&&num7[r]!=array[3][i]&&num7[r]!=array[4][i]&&num7[r]!=array[5][i])
break;
}
array[6][aa]=num7[r];
for(int j=r;j<9;j++)
num7[j]=num7[j+1];
aa++;
}
for(int i=6; i<9; i++)
{
while(true){
r=rand()%(9-i); //生成随机数
if(num7[r]!=array[0][i]&&num7[r]!=array[1][i]&&num7[r]!=array[2][i]&&num7[r]!=array[3][i]&&num7[r]!=array[3][i]&&num7[r]!=array[4][i]&&num7[r]!=array[5][i])
break;
}
array[6][aa]=num7[r];
for(int j=r;j<9;j++)
num7[j]=num7[j+1];
aa++;
}
aa=0;*/
/*第八行*/
/*第九行*/
/*输出数独*/
for(int y = 0;y < 9;++y)
{
cout<<array[0][y]<<" ";
}
cout<<endl;
for(int y = 0;y < 9;++y)
{
cout<<array[1][y]<<" ";
}
cout<<endl;
for(int y = 0;y < 9;++y)
{
cout<<array[2][y]<<" ";
}
cout<<endl;
for(int y = 0;y < 9;++y)
{
cout<<array[3][y]<<" ";
}
cout<<endl;
for(int y = 0;y < 9;++y)
{
cout<<array[4][y]<<" ";
}
cout<<endl;
}