Online Judge | Problem Set | Authors | Online Contests | User | ||||||
---|---|---|---|---|---|---|---|---|---|---|
Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest |
Re:请教一下,我的这个程序为什么会超内存呢?In Reply To:请教一下,我的这个程序为什么会超内存呢? Posted by:zhujie at 2005-12-31 13:25:10 > #include <iostream> > #define MAXN 100 > #define MAXK 100 > #define MAXT 30000 > #define MAX 100000 > using namespace std; > > struct Gangster { > int t,p,s; > }; > int n,k,t; > Gangster g[100]; > int price[MAXK+1][MAXT+1],dp[MAXK+1][MAXT+1]; > > void input(); > void DP(); > int max(int a,int b,int c=-MAX); > > int main() > { > int i,best; > input(); > memset(price,0,sizeof(price)); > for (i=0;i<n;i++) price[g[i].s][g[i].t]=g[i].p; > DP(); > best=0; > for (i=0;i<=k;i++) > if (dp[i][t]>best) best=dp[i][t]; > cout<<best<<endl; > return 0; > } > > void input() > { > > int i; > cin>>n>>k>>t; > for (i=0;i<n;i++) cin>>g[i].t; > for (i=0;i<n;i++) cin>>g[i].p; > for (i=0;i<n;i++) cin>>g[i].s; > } > void DP() > { > int i,j; > dp[0][0]=0; > for (i=1;i<=k;i++) dp[i][0]=-MAX; > for (j=1;j<=t;j++) > { > for (i=0;i<=k;i++) > { > if (i==0) dp[i][j]=max(dp[i][j-1],dp[i+1][j-1])+price[i][j]; > else if (i==k) dp[i][j]=max(dp[i][j-1],dp[i-1][j-1])+price[i][j]; > else dp[i][j]=max(dp[i-1][j-1],dp[i][j-1],dp[i+1][j-1])+price[i][j]; > } > } > } > int max(int a,int b,int c) > { > int temp=(a>b?a:b); > return (temp>c?temp:c); > } Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator