记录编号 186313 评测结果 AAAAAAAAAA
题目名称 [NOIP 2002]过河卒 最终得分 100
用户昵称 GravatarGaoErFu 是否通过 通过
代码语言 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;
}