Uva-10891-Game of Sum
2013-03-22 15:33
232 查看
这个题属于一个动归题, 转移方程为:
d(i,j)=sum(i,j)-min{d(i+1,j),d(i+2,j).......,d(j,j),d(i,j-1),d(i,j-2),.........d(i,i),0};
代码:
d(i,j)=sum(i,j)-min{d(i+1,j),d(i+2,j).......,d(j,j),d(i,j-1),d(i,j-2),.........d(i,i),0};
代码:
#include<cstdio> #include<cstring> #include<iostream> using namespace std; const int maxn=110; int a[maxn],sum[maxn],d[maxn][maxn]; bool vis[maxn][maxn]; int dp(int i,int j) { if(vis[i][j]) return d[i][j]; vis[i][j]=1; int m=0; for(int k=i+1;k<=j;k++) m=min(m,dp(k,j)); for(int k=i;k<j;k++) m=min(m,dp(i,k)); d[i][j]=sum[j]-sum[i-1]-m; return d[i][j]; } int main() { int n; while(scanf("%d",&n)&&n) { memset(vis,0,sizeof(vis)); sum[0]=0; for(int i=1;i<=n;i++) { scanf("%d",&a[i]); sum[i]=sum[i-1]+a[i]; } dp(1,n); printf("%d\n",2*d[1] -sum ); } return 0; }
相关文章推荐
- uva 10891 - Game of Sum
- UVA 10891 Game of Sum(区间DP)
- UVA 10891-Game of Sum(基础DP)
- UVa 10891 Game of Sum(经典博弈区间DP)
- Uva 10891 Game of Sum(区间DP)
- UVA 10891 Game of Sum(记忆化搜索+博弈)
- UVA 10891——Game of Sum
- UVA 10891 Game of Sum(区间DP)
- UVa UVA 10891 Game of Sum (区间DP)
- UVA-10891 Game of Sum
- UVA 10891 - Game of Sum*
- uva 10891 Game of Sum
- Uva - 10891 - Game of Sum
- uva_10891 - Game of Sum( 博弈区间DP )
- uva 10891 Game of Sum(区间dp)
- uva 10891 Game of Sum
- UVA10891[Game of Sum] 动态规划
- UVA 10891 Game of Sum(区间DP)
- UVa 10891 Game of Sum / 记忆化搜索
- [动态规划] Sum游戏 ( Game of Sum, Uva 10891 )