杭电1176 免费馅饼 DP
2010-10-24 02:07
253 查看
还是简单DP,找对状态迁移方程即可,一开始我是这样想a[i][j]=a[i][j]+max(a[i+1][j-1],a[i+1][j],a[i+1][j+1]),但是这样设计的话输出不方便,于是乎设计a[i-1][j]=a[i-1][j]+max(a[i][j-1],a[i][j],a[i][j+1]),这样的话走一个双循环,最后输出a[0][5]即可.
#include<iostream> #include<fstream> using namespace std; #define MAX_NUM 100002 int a[MAX_NUM][11]; int main() { int n; while(scanf("%d",&n),n!=0) { for(int i=0;i<MAX_NUM;i++) for(int j=0;j<11;j++) a[i][j]=0; int pos=0,sec=0,maxsec=0; for(int i=0;i<n;i++) { scanf("%d%d",&pos,&sec); a[sec][pos]++; if(maxsec<sec) maxsec=sec; } for(int i=maxsec;i>0;i--) { for(int j=0;j<11;j++) { if(j==0) a[i-1][j]=a[i-1][j]+max(a[i][j],a[i][j+1]); if(j==10) a[i-1][j]=a[i-1][j]+max(a[i][j-1],a[i][j]); if(j>0&&j<10) a[i-1][j]=a[i-1][j]+max(max(a[i][j],a[i][j+1]),a[i][j-1]); } } printf("%d/n",a[0][5]); } //system("pause"); return 0; }
相关文章推荐
- **【杭电1176】免费馅饼**(经典dp)
- 杭电1176 免费馅饼(数塔dp)
- hdu1176 免费馅饼(dp)
- HDU - 1176 免费馅饼 (简单DP)
- HDU 1176 免费馅饼 水dp
- hdu 1176 免费馅饼(简单dp)
- hdoj 1176免费馅饼【dp】
- HDU 1176 免费馅饼(DP)
- hdoj1176免费馅饼【dp】
- HDU 1176 免费馅饼 树上的dp
- 【HDU 1176】免费馅饼(dp)
- HDOJ-1176 免费馅饼[DP入门]
- HDU-1176 免费馅饼 (线性状态dp)
- hdu 1176 免费馅饼(dp)
- 【HDU 1176】免费馅饼( dp )
- hdu 1176 免费馅饼(DP)
- hdu 1176 免费馅饼(dp)
- HDU 1176 DP 免费馅饼
- HDU_1176 免费馅饼(DP)
- HDOJ 1176 免费馅饼(DP)