用基础C++语法完成巧填九宫格

九宫格巧妙填数。

将1-9个数字分别填入3×3的九宫格中,第一行的三个数字组成一个三位数。 要使第二行的三位数是第一行的2倍,第三行的三位数是第一行的3倍,且每个格子里的数字都不能重复,如下图所示。

用基础C++语法完成巧填九宫格_第1张图片
上图中第一行组成的三位数是192,现在要求输出所有的填充方案,以每种方案中的第一行组成的三位数升序输出。

输入格式:

输出格式:
每一种方案输出共三行,每行中每两个数没有空格,每种方案输出后要输出一个空行。

最后一行一个数字,表示方案的总数。

#include
using namespace std;
int lena,lenb;
int a[10],n1,n2,n3,n4,n5,n6,n7,n8,n9,x,y,z,flag,num=0;
int main() {
	a[0]=0;
	//n1只有三种可能性,否则n3会成为4位数
	for(int a[1]=1; n1<=3; n1++) {
		for(int a[2]=1; n2<=9; n2++) {
			for(int a[3]=1; n3<=9; n3++) {
				flag=1;
				x=n1*100+n2*10+n3;
				y=2*x;
				z=3*x;

				a[4]=y/100;a[5]=y/10%10;a[6]=y%10;
				a[7]=z/100;a[8]=z/10%10;a[9]=z%10;

				//判断是否重复
				a[1]=n1;a[2]=n2;a[3]=n3;a[4]=n4;a[5]=n5;a[6]=n6;a[7]=n7;a[8]=n8;a[9]=n9;
				for(int i=1;i<=8;i++){
					for(int j=i+1;j<=9;j++){
						if(a[j]==a[i]||a[i]==0)flag=0;
					}
				}
				if(flag==1){
					cout<<a[1]<<a[2]<<a[3]<<endl;
					cout<<a[4]<<a[5]<<a[6]<<endl;
					cout<<a[7]<<a[8]<<a[9]<<endl<<endl;
					num++;
				}
			}
		}
	}
	cout<<num;
	return 0;
}

你可能感兴趣的:(C++,c++,编程语言)