您的位置:首页 > Web前端 > JavaScript

[DP]NOIP2002/FJSDFZOJ 1081 过河卒

2014-01-24 22:05 411 查看
原题:http://218.5.5.242:9018/JudgeOnline/problem.php?id=1081

时间:2014.1.24

类型:dp 递推

源码:非完美版(不支持20,20的极限数据)

#include<iostream>
#include<cstring>
using namespace std;
long long a[20][20];
int main()
{
int n,m,x,y;
cin>>n>>m>>x>>y;
memset(a,-1,sizeof(a));
if(x-1>=0&&y-2>=0) { a[x-1][y-2]=0;}
if(x-2>=0&&y-1>=0) { a[x-2][y-1]=0;}
if(x-2>=0&&y+1<=m) { a[x-2][y+1]=0;}
if(x-1>=0&&y+2<=m) { a[x-1][y+2]=0;}
if(x+1<=n&&y+2<=m) { a[x+1][y+2]=0;}
if(x+2<=n&&y+1<=m) { a[x+2][y+1]=0;}
if(x+2<=n&&y-1>=0) { a[x+2][y-1]=0;}
if(x+1<=n&&y-2>=0) { a[x+1][y-2]=0;}
a[x][y]=0;
for(int i=0;i<=n;i++)
{
if(a[i][0]==-1) { a[i][0]=1; }
if(a[i][0]==0)
{
for(int j=i;j<=n;j++)
{
a[j][0]=0;
}
}
}
for(int i=0;i<=m;i++)
{
if(a[0][i]==-1) { a[0][i]=1; }
if(a[0][i]==0)
{
for(int j=i;j<=m;j++)
{
a[0][j]=0;
}
break;
}
}
for(int j=1;j<=m;j++)
{
for(int i=1;i<=n;i++)
{
if(a[i][j]==-1)
{
a[i][j]=0;
a[i][j]+=a[i-1][j]+a[i][j-1];
}
}
}
cout<<a
[m];
//system("pause");
return 0;
}

最后状态:VIJOS AC 福建师大附中OJ WA 17%

总结:经典,经典!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  递推 dp