算法训练——入学考试
//入学考试 //01背包问题 动态规划 dp[i][j]表示当前剩余容量为j,已判定了i个物品,背包的最优情况 #include<stdio.h> #include<string.h> int max(int a,int b){ return a>b?a:b; } int main(){ int i,j,a,b,T,M; scanf("%d%d",&T,&M); int dp[M+1][T+1]; memset(dp,0,sizeof(dp)); //memset()函数 for(i=1;i<=M;i++){ scanf("%d%d",&a,&b); for(j=1;j<=T;j++){ if(j>=a){ //a:采一株药用时 dp[i][j] = max(dp[i-1][j],dp[i-1][j-a] + b); } else dp[i][j] = dp[i-1][j]; } } printf("%d",dp[M][T]); return 0; }