(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]]+v[i]);

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

(RQoj 15 采药------rwkj 10.1.5.253 1447) 动态规划 DP 3,布布扣,bubuko.com

时间: 2024-12-14 18:42:09

(RQoj 15 采药------rwkj 10.1.5.253 1447) 动态规划 DP 3的相关文章

(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) 记忆式搜索 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) 递归 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) 网上

#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

(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

tyvj 1005 采药 0-1背包 优化的一位数组 dp 代码1

#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[