题目链接 | 难度等级 | 完成状态 | 完成分数 | 最后编辑时间 | 失误原因(初次提交分数) |
---|---|---|---|---|---|
骑士游历 | ★☆☆☆☆ | 答案正确 | 100 | 2014/11/28 20:21:12 | 边界问题(50) |
在n*m的棋盘上,马只能从向右走日字格,求(x1,y1)到(x2,y2)的方案数。
dp[x][y]=dp[x][y]+dp[x-1][y-2]+dp[x-1][y+2]+dp[x-2][y-1]+dp[x-2][y+1];
1219.cpp代码已折叠
展开折叠内容
|
---|
#include<cstdio> unsigned long long dp[200][200]={}; int n,m,x0,y0,x1,y1; int main() { scanf("%d%d%d%d%d%d",&n,&m,&x0,&y0,&x1,&y1); dp[x0][y0]=1; for(int x=0;x<=m;++x) for(int y=0;y<=n;++y) { if(x>=2&&y>=3) dp[x][y]=dp[x-1][y-2]; if(x>=2) dp[x][y]+=dp[x-1][y+2]; if(x>=3&&y>=2) dp[x][y]+=dp[x-2][y-1]; if(x>=3) dp[x][y]+=dp[x-2][y+1]; } printf("%llu\n",dp[x1][y1]); } |