九宫格c\c++代码
图形为,一个由9个小九宫格组成的大九宫格(3*3排列)。
要求:大九宫格的每行和每列都要有1到9的数字,每一个小的九宫格里也要有1到9的数字。而且同一个数字在每一行,每一列及每个小宫格里只能出现一次,既不能重复也不能少。
题目中还会给一些已经定下来的数字,如:
* * 2 4 5 * 7 * *
* 4 * * * 8 * 3 *
8 * 1 * * 3 5 * 6
* 5 3 * * * * * 4
7 * * * * * * * 2
2 * * * * * 6 7 *
3 * 6 5 * * 1 * 7
* 2 * 1 * * * 5 *
* * 7 * 2 9 4 *
谢谢啦。。
答案:#include<iostream>
using namespace std;
const int size=10;
int Have[size];
int main()
{
int a,b,c,A[3],B[3],C[3],i;
for(a=123;a<329;a++){
A[0]=a/100;
A[1]=a%100/10;
A[2]=a%10;
if(A[0]&&A[1]&&A[2]){
//如果三个数中有一个0 就不执行后面的,继续for!
for(i=0;i<size;i++)Have[i]=0;
//9个数字1~9
Have[A[0]]=1-Have[A[0]];
Have[A[1]]=1-Have[A[1]];
Have[A[2]]=1-Have[A[2]];
//3 个数字没有相同的
if(Have[A[0]]&&Have[A[1]]&&Have[A[2]]){
b=2*a;
B[0]=b/100;
B[1]=b%100/10;
B[2]=b%10;
if(B[0]&&B[1]&&B[2]){
Have[B[0]]=1-Have[B[0]];
Have[B[1]]=1-Have[B[1]];
Have[B[2]]=1-Have[B[2]];
if(Have[B[0]]&&Have[B[1]]&&Have[B[2]]){
c=3*a;
C[0]=c/100;
C[1]=c%100/10;
C[2]=c%10;
if(C[0]&&C[1]&&C[2]){
Have[C[0]]=1-Have[C[0]];
Have[C[1]]=1-Have[C[1]];
Have[C[2]]=1-Have[C[2]];
for(i=1;i<size&&Have[i];i++);
if(i==size)cout<<a<<endl<<b<<endl<<c<<endl<<endl;
}//if c
}
}
}//end if have[A[]]
}//end if A[]
} //for
system("pause");
return 0;
}
上一个:求一段C++代码
下一个:C++学习要注意什么.