0
已解决
李锦昊
中级天翼
中级天翼
弱**代码:
#include<bits/stdc++.h>
using namespace std;
int r,zh;
int n,sum;
struct p{
int t,z,zf;
}a[55];
bool cmp(p x,p y){
return x.t*y.z<y.t*x.z;
}
int main(){
cin>>r>>zh;
cin>>n;
for(int i=1;i<=n;i++){
cin>>a[i].t>>a[i].z>>a[i].zf;
}
sort(a+1,a+n+1,cmp);
for(int i=1;i<=n;i++){
if(a[i].t<=r&&a[i].z<=zh){
sum+=a[i].zf;
r-=a[i].t;
zh-=a[i].z;
}
cout<<a[i].t<<" "<<a[i].z<<" "<<a[i].zf<<endl;
}
cout<<sum;
return 0;
}
样例过了,找错,我认为我排序错了
李锦昊在2021-10-02 19:59:28追加了内容
24行是调试代码
李锦昊在2021-10-02 19:59:56追加了内容
**=**=ji
0
已采纳
张皓轩
中级光能
中级光能
01背包:
int dp[400][400];
int a[55],b[55],c[55];
int t,w;
void Dp(int n){
memset(dp,0,sizeof(dp));
for(int i=1;i<=n;i++)
for(int j=t;j>=0;j--)
for(int k=w;k>=0;k--)
if(j>=a[i]&&k>=b[i])dp[j][k]=max(dp[j][k],dp[j-a[i]][k-b[i]]+c[i]);
}
int main(){
int n;
scanf("%d%d",&t,&w);
scanf("%d",&n);
for(int i=1;i<=n;i++)
scanf("%d%d%d",&a[i],&b[i],&c[i]);
Dp(n);
printf("%d\n",dp[t][w]);
return 0;
}
注:不是贪心,是动态规划
0