wuyk 提交的代码
提交时间:2022 四月 语言:C++运行时间:4ms占用内存:294K
运行状态: Accepted
题目:Buyer1567

登录之后查看代码,点此登录账号

                
                    #include<bits/stdc++.h>
using namespace std;

int main(){
    int m,n;
    int a[1005]; //第i件物品的钱  下标从1开始
    int po[1005];//第i件物品的popularity
    vector<int> q[1005];
    int dp[1005][105];

    while(cin>>m>>n){  //m:前的总数  n:物品的总量
        for(int i=1;i<=n;i++){
            cin>>a[i]>>po[i];
        }
        dp[0][0]=0;
        memset(dp,0,sizeof(dp));

        for(int i=1;i<=n;++i){
            for(int j=0;j<=m;++j){
                if(j>=a[i] && dp[i-1][j-a[i]]+po[i]> dp[i-1][j]){
                    dp[i][j] = dp[i-1][j-a[i]]+po[i];
                    q[j]=q[j-a[i]];
                    q[j].push_back(i); 
                    //debug用的: cout<<i;              
                }
                else  dp[i][j]=dp[i-1][j];  
    /*debug: 刚刚写的是dp[i-1,j];   要会看error的提示
    1567Buyer.cpp:23:40: error: invalid conversion from 'int*' to 'int' [-fpermissive]
    else  dp[i][j]=dp[i-1,j];
    */
            }
        }

        cout<<dp[n][m]<<endl;
        if(dp[n][m]!=0){
            for (int i = 0; i < q[m].size(); i++){
					cout<<q[m][i]<<" "; }
		    cout<<endl;
        }
        

     /*  这个少了一个数 为啥子捏??
      while(!q[m].empty()){
            int now=q[m].front();
            cout<<now<<" ";
            q[m].pop_back();
        }
        cout<<endl;
    */
    }

    return 0;
}