第一个demo re错误,本地可以而且不会死机,菜鸡求教
查看原帖
第一个demo re错误,本地可以而且不会死机,菜鸡求教
224114
kingjamesandAD23楼主2020/6/1 14:35
#include<iostream>
#include<algorithm>
using namespace std;

struct pills{
    int time;
    int price;
};

bool cmp(struct pills A,struct pills B){
    return A.time<B.time;
}

class Pick{
    private:
        struct pills* pp;
        int* Result;
        int num;
    public:
        Pick(int n,struct pills* P);
        int Dynamic(int total_time);
        ~Pick(){delete[]pp,delete[]Result;}
};

int Pick::Dynamic(int total_time){
    int **Result=new int*[num+1];
    for(int i=0;i<num+1;i++){
        Result[i]=new int[total_time+1];
    }
    for(int i=0;i<num+1;i++){
        for(int j=0;j<total_time+1;j++){
            Result[0][j]=0;
            Result[i][0]=0;
        }
    }

    for(int i=1;i<=num;i++){
        for(int j=1;j<=total_time;j++){
            if(pp[i].time>j)
            Result[i][j]=Result[i-1][j];
            else
            Result[i][j]=max(Result[i-1][j],Result[i-1][j-pp[i].time]+pp[i].price);
        }
    }

    return Result[num][total_time];
}

Pick::Pick(int n,struct pills* P){
    Result=new int[10000000];
    for(int i=0;i<10000000;i++){
        Result[i]=0;
    }
    num=n;
    pp=new pills[n];
    for(int i=1;i<=num;i++){
        pp[i]=P[i-1];
    }
}

int main(){
    int T,M;
    cin>>T>>M;
    pills* P=new pills[M];
    for(int i=0;i<M;i++){
        cin>>P[i].time>>P[i].price;
    }
    sort(P,P+M,cmp);
    Pick liu(M,P);
    cout<<liu.Dynamic(T)<<endl;
    return 0;
}
2020/6/1 14:35
加载中...