有没有大哥告诉我一下我哪里有问题
查看原帖
有没有大哥告诉我一下我哪里有问题
1037170
yaokuangda楼主2024/3/4 14:15

我的思路就是先降序排序,然后两个两个一组去计算时间,如果最后不够两个一组的话就将哪一个时间直接存到temp

#include <algorithm>
#include <iostream>

using namespace std;

const int N = 30;
int res[5],ans;
int sum[5],loc[5][N];

bool cmp(int x,int y){
    return x>y;
}

int main(){
    for(int i=1;i<=4;i++)   cin>>sum[i];
    for(int i=1;i<=4;i++){
        for(int j=1;j<=sum[i];j++){
            cin>>loc[i][j];
        }
        sort(loc[i]+1,loc[i]+1+sum[i],cmp);         //或者cmp处写greater<int>()
    }
    
    for(int i=1;i<=4;i++){
        for(int j=1;j<=sum[i];j++){
            int temp = 0;
            if(loc[i][j+1])     temp = min(loc[i][j],loc[i][j+1]);
            else if(!loc[i][j+1])   temp = loc[i][j]; 
            res[i] += temp;
            loc[i][j+1] = max(loc[i][j],loc[i][j+1])-temp;
        }
        
        ans+=res[i];
    }
    cout<<ans;
    return 0;
}
2024/3/4 14:15
加载中...