在2行5列的格子中填入1到10的数字。
要求:
相邻的格子中的数,右边的大于左边的,下边的大于上边的。
要求:
相邻的格子中的数,右边的大于左边的,下边的大于上边的。
如【图1.png】所示的2种,就是合格的填法。
请提交该整数,不要填写任何多余的内容(例如:说明性文字)。
#include<iostream>
using namespace std;
int sum=0;
int a[11]={0};
int visit[11]={0};
bool dfs(int cur)
{
if(cur==9)
{
for(int i=2;i<=9;i++)
if(visit[i]==0)
{
a[cur]=i;
break;
}
if(a[cur]>a[cur-1]&&a[cur]>a[cur-5])
{
sum++;
return true;
}
return false;
}
for(int j=2;j<=9;j++)
{
if(visit[j]==0)
{
a[cur]=j;
visit[j]=1;
if(cur>5)
{
if(cur!=6)
{
if(a[cur]>a[cur-5]&&a[cur]>a[cur-1])
{
if(dfs(cur+1))
{
visit[j]=0;
continue;
}
}
}
else
{
if(dfs(cur+1)){
visit[j]=0;
continue;
}
}
}
else
{
if(a[cur]>a[cur-1])
{
if(dfs(cur+1))
{
visit[j]=0;
continue;
}
}
}
visit[j]=0;
}
}
return false;
}
int main()
{
visit[1]=visit[10]=1;
a[1]=1;a[10]=10;
dfs(2);
cout<<sum<<endl;
return 0;
}
42种。