题目描述
在2行5列的格子中填入1到10的数字。
要求:相邻的格子中的数,右边的大于左边的,下边的大于上边的。
如下图所示的2种,就是合格的填法。
请你计算一共有多少种可能的方案。
image
输出
请输出该整数,不要输出任何多余的内容
#include<bits/stdc++.h>
int map[3][6];
int flag[15],sum[0];
int check()
{
int i,j;
for(i=0;i<2;i++)
for(j=0;j<5;j++)
{
if((map[i][j]>map[i][j+1]) || (map[i][j]>map[i+1][j]))
return 0;
}
return 1;
}
void dfs(int count)
{
int i,j;
if (count==10)
{
if(check())
sum++;
return;
}
for(i=1;i<=10;i++){
if(!flag[i])
{
flag[i]=1;
map[count/5][count%5]=i;
dfs(count+1);
flag[i]=0;
}
}
}
int main ()
{
map[0][5]=map[1][5]=100;
for(int i=0;i<5;i++)
map[2][i]=100;
dfs(0);
printf("%d\n",sum);
return 0;
}
网友评论