以下两个代码,一个20分(关闭O2优化,开启O2只有10分),一个100分
感觉看起来完全等价但执行效果完全不同
代码1:
#include<bits/stdc++.h>
using namespace std;
int main(){
long long n,x;
long long a,b,c;
cin>>n>>x;
long long arr[n+20][x+20] = {0};
for(long long i = 1;i<=n;i++) {
cin>>a>>b>>c;
for(long long j = 0 ; j <= x ; j++) {
long long p,q = 0;
p,q = 0;
if(j>=c) {
p = arr[i-1][j-c] + b;
}
q = arr[i-1][j] + a;
arr[i][j] = max(p,q);
}
}
cout<<arr[n][x]*5<<endl;
return 0;
}
代码2:
#include<bits/stdc++.h>
using namespace std;
int main(){
long long n,x;
long long a,b,c;
cin>>n>>x;
long long arr[n+20][x+20] = {0};
for(long long i = 1;i<=n;i++) {
cin>>a>>b>>c;
for(long long j = 0 ; j <= x ; j++) {
long long p,q = 0;
if(j>=c) arr[i][j] = max(arr[i-1][j-c] + b,arr[i-1][j] + a);
else arr[i][j] = arr[i-1][j] + a;
}
}
cout<<arr[n][x]*5<<endl;
return 0;
}