打好普通代码。
#include <bits/stdc++.h>
using namespace std;
int main(){
return 0;
}
然后打上代码。
#include <bits/stdc++.h>
using namespace std;
int main(){
int m,n;
cin >> m >> n;
return 0;
}
在main函数外面打:
int w[1001], c[1001] , f[1001];
这样就可以让这些数组就等于0,不用一个一个去弄了;
然后在cin下打:
for(int i = 1; i <= n; i++){
cin >> w[i] >> c[i];
}
双重循环
for(int i = 1; i <= n; i++){
for(int j = m; j >= 0; j--){
if(j >= w[i]){
f[j] = max(f[j], f[j - w[i]] + c[i]);
}
}
最后输出
cout << f[m];
全部代码:
#include <bits/stdc++.h>
using namespace std;
int w[1001], c[1001] , f[1001];
int main(){
//1 m 表示背包总容量,n表示宝石总数
int m,n;
cin >> m >> n;
//2 循环输入宝石重量与对应的价值
for(int i = 1; i <= n; i++){
cin >> w[i] >> c[i];
}
for(int i = 1; i <= n; i++){
for(int j = m; j >= 0; j--){
if(j >= w[i]){
f[j] = max(f[j], f[j - w[i]] + c[i]);
}
}
}//输出最终最优解
cout << f[m];
return 0;
}