请教一下为什么把注释掉的初始化加上就会WA
查看原帖
请教一下为什么把注释掉的初始化加上就会WA
468029
dfxgbm楼主2021/10/28 21:13
#include <cstdio>
#include <algorithm>
#define INF 0x2f2f2f2f
const int MAXM=101,MAXR=101,MAXN=101;
using namespace std;
int dp[MAXM][MAXR],res[MAXM][MAXR];
struct girl {
	int rmb,rp,t;
	girl():rmb(0),rp(0),t(0){}
};
girl a[MAXN];
int main() {
    int n,m,r;
    scanf("%d",&n);
    for(int i=1; i<=n; i++) {
    	scanf("%d%d%d",&a[i].rmb,&a[i].rp,&a[i].t);
	}
	scanf("%d%d",&m,&r);
/*	for(int i=1; i<=m; i++) {
		for(int j=1; j<=r; j++)	   res[i][j]=INF;
	}为何不能加上?*/
	for(int i=1; i<=n; i++) {
		for(int j=m; j>=a[i].rmb; j--) {
			for(int k=r; k>=a[i].rp; k--) {
				girl now=a[i];
				if(dp[j-now.rmb][k-now.rp]+1>dp[j][k]) {  //如果选了之后数量更多,那么就选 
					dp[j][k]=dp[j-now.rmb][k-a[i].rp]+1;
					res[j][k]=res[j-now.rmb][k-a[i].rp]+now.t;  //注意要选上!
				}
				else if(dp[j-a[i].rmb][k-now.rp]+1==dp[j][k]) {
					res[j][k]=min(res[j][k],res[j-now.rmb][k-now.rp]+now.t);
				}
			}
		}
	}
	printf("%d",res[m][r]);
    return 0;
}
2021/10/28 21:13
加载中...