C++代码:
#include<bits/stdc++.h>
using namespace std;
int n,i,m;
int s[1001];
int main(){
cin>>m>>n;
for(i=1;i<=m;i++){
int a,b,c;
cin>>a>>b>>c;
if(c==-1){//可以使用无限次
for(int j=n;j>=a;j--)s[j]=max(s[j],s[j-a]+b);
}else if(c==0){//只能使用一次
for(int j=a;j<=n;j++)s[j]=max(s[j],s[j-a]+b);
}else{//可以使用多次
for(int k=0;k<c;k++)
for(int j=n;j>=a;j--)s[j]=max(s[j],s[j-a]+b);
}
}
cout<<s[n];
return 0;
}