请完善下面的程序,将1~9个数字分别填入3x3的九宫格中,第一行的三个数字组成个三位数。要使第二行的三位数是第一行的2倍,第三行的三位数是第一行的3倍且每个格子里的数字都不能重复,现在要求输出所有的填充方案,以每种方案中的第一行组成的三位数升序输出。
输出格式:
每一种方案输出共三行,每行中每两个数没有空格,每种方案输出后要输出一个空行。
最后一行一个数字,表示方案的总数。
4includecbits/stdc++.h>using namespace stdpfiefine n g
int a[10],b[10],t1,t2,t3,c;void f(int s){
int i;
if(①)t1-a[1]*100+a[2]*10+a[3];
t2-a[4]*100+a[5]*10+a[6];
t3=a[7]*100+a[8]*10+a[9];
if(_② )!
cout<<t1<<end1<<t2<<endl<<t3<<endl<<endl;
C十+;
return;
for(i=l;i<=n;i++)
{if(b[i]=-0){
3
b[i]-1;
4
5
int main()
f(1);
cout<<c<<endl;
{
1处应填
s==n+1
s==n
s<n
s>=n
2处应填
3*2==t2&&t3*3==t1
t1*2==t2&&t2l*3==t3
tl*3==t2&&tl*2==t3
t1*2==t2&&t1*3==t3
3处应填
a[c]=i
a[s]=i
a[i]=s;b[c]=i
b[s]=i
4处应填
f(i+1)
f(s+1)
f(c+1)
f(c+i+1)
5处应填
a[s]=0
f(s-1)
a[s]=i
b[i]=0
发表评论