记录编号 |
125379 |
评测结果 |
AAAAAAAAAA |
题目名称 |
[NOIP 2002]过河卒 |
最终得分 |
100 |
用户昵称 |
水中音 |
是否通过 |
通过 |
代码语言 |
C++ |
运行时间 |
0.003 s |
提交时间 |
2014-10-08 17:17:21 |
内存使用 |
0.32 MiB |
显示代码纯文本
#include<iostream>
#include<cstdio>
using namespace std;
bool a[21][21]={0};
int bx,by,mx,my;
long long k[21][21]={0};
int main()
{
freopen("pj024.in","r",stdin);
freopen("pj024.out","w",stdout);
scanf("%d%d%d%d",&bx,&by,&mx,&my);
a[mx][my]=true;
if(mx<=18&&my<=19)a[mx+2][my+1]=true;
if(mx<=18&&my>=1)a[mx+2][my-1]=true;
if(mx>=2&&my<=19)a[mx-2][my+1]=true;
if(mx>=2&&my>=1)a[mx-2][my-1]=true;
if(mx<=19&&my<=18)a[mx+1][my+2]=true;
if(mx<=19&&my>=2)a[mx+1][my-2]=true;
if(mx>=1&&my<=18)a[mx-1][my+2]=true;
if(mx>=1&&my>=2)a[mx-1][my-2]=true;
for(int i=1;i<=by;i++)
if(a[0][i]) break;
else k[0][i]=1;
for(int i=1;i<=bx;i++)
if(a[i][0]) break;
else k[i][0]=1;
for(int i=1;i<=by;i++)
for(int p=1;p<=bx;p++)
{
if(!a[p][i-1])k[p][i]+=k[p][i-1];
if(!a[p-1][i])k[p][i]+=k[p-1][i];
}
printf("%lld\n",k[bx][by]);
return 0;
}