记录编号 |
186313 |
评测结果 |
AAAAAAAAAA |
题目名称 |
[NOIP 2002]过河卒 |
最终得分 |
100 |
用户昵称 |
GaoErFu |
是否通过 |
通过 |
代码语言 |
C++ |
运行时间 |
0.002 s |
提交时间 |
2015-09-12 16:19:25 |
内存使用 |
0.29 MiB |
显示代码纯文本
#include<stdio.h>
int main()
{
freopen("pj024.in","r",stdin);
freopen("pj024.out","w",stdout);
int x1,x2,y1,y2,a[25][25]={0},i,j;
scanf("%d%d%d%d",&x1,&y1,&x2,&y2);//1为B点,2为马点。
a[0][0]=1;
a[1][0]=1;
a[0][1]=1;
a[x2][y2]=-1;
a[x2+1][y2+2]=-1;
a[x2+2][y2+1]=-1;
a[x2-1][y2-2]=-1;
a[x2-2][y2-1]=-1;
a[x2+1][y2-2]=-1;
a[x2-1][y2+2]=-1;
a[x2+2][y2-1]=-1;
a[x2-2][y2+1]=-1;//马的控制点为-1。
for(i=0;i<=x1;i++)
for(j=0;j<=y1;j++)
{
if(i==0&&j==0)continue;
else if(i==x2&&j==y2||i==x2+1&&j==y2+2||i==x2+2&&j==y2+1||i==x2-1&&j==y2-2||i==x2-2&&j==y2-1||i==x2-2&&j==y2+1||i==x2-1&&j==y2+2||i==x2+2&&j==y2-1||i==x2+1&&j==y2-2)continue;
else if(i==0)a[i][j]=a[i][j-1];
else if(j==0)a[i][j]=a[i-1][j];
else if(a[i-1][j]==-1&&a[i][j-1]!=-1)a[i][j]=a[i][j-1];
else if(a[i][j-1]==-1&&a[i-1][j]!=-1)a[i][j]=a[i-1][j];
else if(a[i-1][j]==-1&&a[i][j-1]==-1)a[i][j]=0;
else a[i][j]=a[i-1][j]+a[i][j-1];
}
printf("%d",a[x1][y1]);
return 0;
}