(RQoj 15 采药------rwkj 10.1.5.253 1447) 递归 1

#include <iostream>
using namespace std;
int dp[105][1005],w[105],v[105] ;

int max(int a,int b) { return a > b ? a : b; }
int f(int x,int y)
{ int t ;
if(dp[x][y]!=-1) return dp[x][y] ;
if(x==0 || y==0 ) return dp[x][y]=0 ;
else
{
t=f(x-1,y) ;
if(y>=w[x]) dp[x][y]=max(t,f(x-1,y-w[x]) +v[x] ); else dp[x][y]=t;
}
return dp[x][y];

}

int main()
{
int T,M,i,j ;
cin>>T>>M ;
for(i=1;i<=M ;i++) cin>>w[i]>>v[i];
memset(dp ,-1,sizeof(dp));
f(M,T) ;
cout<<dp[M][T]<<endl;

}

**************************************************************************************

hnldyhy(303882171) 9:32:14
#include <iostream>
#include <string.h>
using namespace std;
int dp[105][1005], w[105],v[105],T,M;
int max(int x,int y) { return x>y?x:y; }
int f(int x,int y)
{ int t;
if (dp[x][y]!=-1) return dp[x][y];
if ( x==0 || y==0 ) return dp[x][y]=0;
else
{ t=f(x-1,y);
if ( y>=w[x] ) dp[x][y]=max(t,f(x-1,y-w[x])+v[x] ); else dp[x][y]=t;
}
return dp[x][y] ;
}
int main()
{ int T,M,i,j;
cin>>T>>M;
for ( i=1; i<=M; i++) cin>>w[i]>>v[i];
memset(dp,-1,sizeof(dp));
f(M,T);
cout<<dp[M][T]<<endl;
return 0;
}

(RQoj 15 采药------rwkj 10.1.5.253 1447) 递归 1,布布扣,bubuko.com

时间: 2024-10-10 15:41:21

(RQoj 15 采药------rwkj 10.1.5.253 1447) 递归 1的相关文章

(RQoj 15 采药------rwkj 10.1.5.253 1447) 递归 2

#include <iostream>#include <string.h>using namespace std;int dp[105][1005], w[105],v[105],T,M,;int max(int x,int y) { return x>y?x:y; }int f(int x,int y){ int t; if ( x==M+1 || y==0 ) return dp[x][y]=0; else { t=f(x+1,y); if ( y>=w[x] )

(RQoj 15 采药------rwkj 10.1.5.253 1447) 记忆式搜索 2

#include <iostream>#include <string.h>using namespace std;int dp[105][1005], w[105],v[105],T,M,;int max(int x,int y) { return x>y?x:y; }int f(int x,int y){ int t; if (dp[x][y]!=-1) return dp[x][y]; if ( x==M+1 || y==0 ) return dp[x][y]=0; e

(RQoj 15 采药------rwkj 10.1.5.253 1447) 动态规划 DP 1

#include <iostream>#include <string.h>using namespace std;int dp[105][1005], w[105],v[105],T,M;int max(int x,int y){ return x>y?x:y; } void f( ){ int i,j; for (i=1; i<=M; i++) for (j=0;j<=T; j++) { if (i==0) dp[i][j]=0; else dp[i][j]=

(RQoj 15 采药------rwkj 10.1.5.253 1447) 动态规划 DP 2

70 371 10069 11 2 #include <iostream>#include <string.h>using namespace std;int dp[105][1005], w[105],v[105],T,M;int max(int x,int y){ return x>y?x:y; }void f( ){ int i,j; for (i=M; i>=1; i--) for (j=0;j<=T; j++) { if (i==M+1) dp[i][j

(RQoj 15 采药------rwkj 10.1.5.253 1447) 动态规划 DP 3

#include <iostream>#include <string.h>using namespace std;int dp[1005], w[105],v[105],T,M;int max(int x,int y) { return x>y?x:y; }void f( ){ int i,j; for (i=1; i<=M; i++) for (j=T;j>=0; j--) if (j>=w[i]) dp[j]=max(dp[j],dp[j-w[i]]+

(RQoj 15 采药------rwkj 10.1.5.253 1447) 网上

#include<stdio.h>int max(int x,int y){ int z; if (x>y) z=x; else z=y; return z;} int max(int a,int b){ return a > b ? a : b;} int main(){ int time[100],value[100]; int f[1000]={0}; int t,m,i,j; int max(int x,int y);//.....比较两个数的大小. scanf("

(RQoj 15采药------rwkj 10.1.5.253 1447) 记忆式搜索 1

#include <iostream>using namespace std;int dp[105][1005],w[105],v[105] ; int max(int a,int b) { return a > b ? a : b; }int f(int x,int y){ int t ; if(dp[x][y]!=-1) return dp[x][y] ; if(x==0 || y==0 ) return dp[x][y]=0 ; else { t=f(x-1,y) ; if(y&g

rwkj 1505 poj 1258 10.1.5.253 1505

#include <iostream>// poj 1258 10.1.5.253 1505using namespace std; #define N 105 // 顶点的最大个数 (多写 int a[N][N],low[N],n,ans;int min(int x,int y){ return x<y?x:y; } void prim(int u0) { int i,j,m,k; ans=0; // for (i=1;i<n;i++) low[i]=a[u0][i]; // l

6月15日至10月15日ACM训练计划

暑期又要开始了,去年荒废了一个暑假,不仅玩得不爽,更重要的是毁了自己的ACM之路,今年并不能像去年那样毫无顾忌的刷题了,毕竟有考研这座大山在这儿,但是为了研一那一点点的希望之火,考研第一,但也要抽出时间ACM,每天我大概11点回寝室,那我就限定自己在回寝室之后每天用一个半小时时间刷题吧,虽然进步会很慢,但是坚持下去总是会有收获的,前些天,在刷一些基础的数据结构,虽然这些算法自己以前都学过,但是在刷一遍,肯定会有不同的收获,特别是从理解的深度和难度上来说,我觉得对自己都是很有好处的. 我的三本AC