哪错了求助

lyq123 星空寂静 2024-06-22 21:17:53 2024-06-22 21:18:05 14

@cpp

#include<iostream>
using namespace std;
int m,n; 
int w[31];
int c[31];
int dp[31][201]; 
int main(){
	cin>>m>>n;
	
	for(int i=1;i<=n;i++){
		cin>>w[i]>>c[i];
	}
	

	for(int i=1;i<=n;i++){

		for(int j=1;j<=m;j++){
		
			if(w[i]>j){ 
				dp[i][j]=dp[i-1][j];
			}else{
				dp[i][j]=max(dp[i-1][j],dp[i-1][j-w[i]]+c[i]);
			} 
		} 
	}	
	cout<<dp[n][m]; 
}


{{ vote && vote.total.up }}

共 5 条回复

CPP 刷题王

@lyq123

  1. 你数组开小了。。。。
  2. 输入反了。。。
  3. 如果 的话就得按照我的方式写,如果 的话才按照你的方式写。
CPP 刷题王
cin >> n >> m;
....
for(int j=0;j<=m;j++){
			dp[i][j]=dp[i-1][j];
			if(w[i]<=j){
				dp[i][j]=max(dp[i][j],dp[i-1][j-w[i]]+c[i]);
			} 
		}  
CPP 刷题王

@root 这数据有点水吧, 输入反了都可以得

CPP 刷题王

!怎么还点名呢。。。

root 站长

@CPP