当前位置:编程学习 > C/C++ >>

九宫格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++学习要注意什么.

CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,