方格填数
如下的10个格子
±-±-±-+
| | | |
±-±-±-±-+
| | | | |
±-±-±-±-+
| | | |
±-±-±-+
(如果显示有问题,也可以参看【图1.jpg】)
填入0~9的数字。要求:连续的两个数字不能相邻。
(左右、上下、对角都算相邻)
一共有多少种可能的填数方案?
请填写表示方案数目的整数。
代码:
思路:(暴力解决)
#include <iostream>
using namespace std;
int main(int argc, char** argv) {
int i1,i2,i3,i4,i5,i6,i7,i8,i9,i10,n=0;
for(i1=0;i1<=9;i1++)
for(i2=0;i2<=9;i2++)
for(i3=0;i3<=9;i3++)
for(i4=0;i4<=9;i4++)
for(i5=0;i5<=9;i5++)
for(i6=0;i6<=9;i6++)
for(i7=0;i7<=9;i7++)
for(i8=0;i8<=9;i8++)
for(i9=0;i9<=9;i9++)
for(i10=0;i10<=9;i10++)
{
if(i2!=i1 &&i3!=i1 && i3!=i2&&i4!=i3 && i4!=i2&& i4!=i1&&
i5!=i1&& i5!=i2&&i5!=i3&&i5!=i4&&i6!=i1&&i6!=i2&&i6!=i3&&i6!=i4&&i6!=i5
&&i7!=i1&&i7!=i2&&i7!=i3&&i7!=i4&&i7!=i5&&i7!=i6&&i8!=i1&&i8!=i2&&i8!=i3&&i8!=i4&&i8!=i5&&i8!=i6&&i8!=i7
&&i9!=i1&&i9!=i2&&i9!=i3&&i9!=i4&&i9!=i5&&i9!=i6&&i9!=i7&&i9!=i8
&&i10!=i1&&i10!=i2&&i10!=i3&&i10!=i4&&i10!=i5&&i10!=i6&&i10!=i7&&i10!=i8&&i10!=i9
)
{
if(i1==i2+1||i1==i4+1||i1==i5+1||i1==i6+1
||i2==i3+1||i2==i5+1||i2==i6+1||i2==i7+1
||i3==i6+1||i3==i7+1
||i4==i5+1||i4==i8+1||i4==i9+1
||i5==i6+1||i5==i9+1||i5==i10+1||i5==i8+1
||i6==i7+1||i6==i9+1||i6==i10+1
||i7==i10+1
||i8==i9+1||
i9==i10+1||
i1==i2-1||i1==i4-1||i1==i5-1||i1==i6-1
||i2==i3-1||i2==i5-1||i2==i6-1||i2==i7-1
||i3==i6-1||i3==i7-1
||i4==i5-1||i4==i8-1||i4==i9-1
||i5==i6-1||i5==i9-1||i5==i10-1||i5==i8-1
||i6==i7-1||i6==i9-1||i6==i10-1
||i7==i10-1
||i8==i9-1||
i9==i10-1
)
break;
else
{
n++;
}
}
}
cout<<n<<endl;
return 0;
}
答案:1580