问题 4945 --九宫格

4945: 九宫格★★★

时间限制: 1 Sec  内存限制: 128 MB
提交: 208  解决: 135
[提交][状态][命题人:]

题目描述

请完善下面的程序,将1~9个数字填入3*3的九宫格中,每一行的三个数字组成一个三位数。要使第二行的三位数是第三行的2倍,第一行的三位数是第三行的3倍,且每个格子里的数字都不能重复。比如第三行是327,则第二行是654,第一行是981,满足上述要求。

现在要求输出所有的填充方案,以每种方案中的第一行组成的三位数升序输出。

输出格式:每一种方案输出共三行,每行为一个三位数,每种方案输出后都要输出一个空行。

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

#include<bits/stdc++.h>
using namespace std;
#define n 9
int a[10], b[10], t1, t2, t3, c;
void f(int s)
{
	int i;
	if(____(1)______)
	{
		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(_____(2)_______)
		{
			cout<<t1<<endl;
			cout<<t2<<endl;
			cout<<t3<<endl;
			cout<<endl;
			c++;
		}
		return;
	}
	for(i=1;i<=n;i++)
	{
		if(b[i]==0)
		{
			______(3)______
			b[i]=1;
			_____(4)_______
			_____(5)_______
		}
	}
}
int main( )
{
    f(1);
    cout<<c<<endl;
    return 0;
}

输入

输出

提示

来源

[提交][状态]