比赛 |
20140714下午练习 |
评测结果 |
AAAAWWWWEA |
题目名称 |
跳马问题 |
最终得分 |
50 |
用户昵称 |
slyrabbit |
运行时间 |
0.079 s |
代码语言 |
C++ |
内存使用 |
0.35 MiB |
提交时间 |
2014-07-14 15:25:53 |
显示代码纯文本
#include<iostream>
#include<cstdio>
using namespace std;
int m,n;
int a[5000][2],head=0,tile=0,s=0;
int r1[4]={-2,-1,+1,+2};
int r2[4]={+1,+2,+2,+1};
void bfs(int i,int j)
{
while(head<tile)
{
a[head+1][0]=0;
a[head+1][1]=0;
head++;
for(int k=0;k<4;k++)
{
if(i+r1[k]>0&&i+r1[k]<=m&&j+r2[k]>0&&j+r2[k]<=n)
{
if(i+r1[k]==m&&j+r2[k]==n)
{
s++;
continue;
}
else
{
a[++tile][0]=i+r1[k];
a[tile][1]=j+r2[k];
}
}
}
bfs(a[head+1][0],a[head+1][1]);
}
}
int main()
{
freopen("horse.in","r",stdin);
freopen("horse.out","w",stdout);
cin>>m>>n;
tile+=1;
a[tile][0]=1;
a[tile][1]=1;
bfs(1,1);
cout<<s;
return 0;
}