记录编号 |
211890 |
评测结果 |
AAAAAAAAAA |
题目名称 |
跳马问题 |
最终得分 |
100 |
用户昵称 |
冥焱 |
是否通过 |
通过 |
代码语言 |
C++ |
运行时间 |
0.016 s |
提交时间 |
2015-12-04 13:20:08 |
内存使用 |
0.30 MiB |
显示代码纯文本
#include<stdio.h>
int num[30][30]={0},n,m,ans=0;
void dfs(int f1,int f2)
{
if(f1==m&&f2==n)
ans+=num[f1][f2];
else
{
if(f1-2>=1&&f2+1<=n)
{
num[f1-2][f2+1]+=num[f1][f2];
dfs(f1-2,f2+1);
num[f1-2][f2+1]-=num[f1][f2];
}
if(f1-1>=1&&f2+2<=n)
{
num[f1-1][f2+2]+=num[f1][f2];
dfs(f1-1,f2+2);
num[f1-1][f2+2]-=num[f1][f2];
}
if(f1+2<=m&&f2+1<=n)
{
num[f1+2][f2+1]+=num[f1][f2];
dfs(f1+2,f2+1);
num[f1+2][f2+1]-=num[f1][f2];
}
if(f1+1<=m&&f2+2<=n)
{
num[f1+1][f2+2]+=num[f1][f2];
dfs(f1+1,f2+2);
num[f1+1][f2+2]-=num[f1][f2];
}
}
}
int main()
{
freopen("horse.in","r",stdin);
freopen("horse.out","w",stdout);
scanf("%d%d",&m,&n);
num[1][1]=1;
dfs(1,1);
printf("%d\n",ans);
return 0;
}
//MADE BY 仁圣帝皇(WP)