方格填数
如图,如下的10个格子,填入0~9的数字。要求:连续的两个数字不能相邻。
(左右、上下、对角都算相邻)一共有多少种可能的填数方案?
请填写表示方案数目的整数。
思路:这题方法很简单,暴力求解,依次向每个格子填数与已经填入的进行比较是否连续,即:是否相邻两者之差的绝对值为1。
答案: 结果为206059714
//如果数字可以重复使用,结果为206059714
#include <iostream>
#include <cmath>
using namespace std;
int main()
{
int sum=0;
for(int a=0; a<=9; a++)
for(int b=0; b<=9; b++)
{
if(abs(b-a)==1) continue;
for(int c=0; c<=9; c++)
{
if(abs(c-b)==1) continue;
for(int d=0; d<=9; d++)
{
if(abs(d-a)==1) continue;
for(int e=0; e<=9; e++)
{
if(abs(e-a)==1||abs(e-b)==1||abs(e-d)==1) continue;
for(int f=0; f<=9; f++)
{
if(abs(f-a)==1||abs(f-b)==1||abs(f-c)==1||abs(f-e)==1) continue;
for(int g=0; g<=9; g++)
{
if(abs(g-b)==1||abs(g-c)==1||abs(g-f)==1) continue;
for(int h=0; h<=9; h++)
{
if(abs(h-d)==1||abs(h-e)==1) continue;
for(int i=0; i<=9; i++)
{
if(abs(i-d)==1||abs(i-e)==1||abs(i-f)==1||abs(i-h)==1) continue;
for(int j=0; j<=9; j++)
{
if(abs(j-e)==1||abs(j-f)==1||abs(j-g)==1||abs(j-i)==1) continue;
sum++;
}
}
}
}
}
}
}
}
}
cout<<sum<<endl;
return 0;
}