头像
青春不悔
发布于 2020-06-02 16:09
+ 关注

救命

有谁告诉我错在哪里了吗?
#include<iostream>
#include<algorithm>
using namespace std;
int main(){
    int n,m,k;
    int a[20][20]={0};
    int sumi[20]={0},sumj[20]={0};
    cin>>n>>m>>k;
    for(int i=0;i<n;i++){
        for(int j=0;j<m;j++){
            cin>>a[i][j];
        }
    }
    int maxi=-1,maxj=-1,maxn=0;
    char maxc;
    for(int i=0;i<n;i++){
        for(int j=0;j<m;j++){
            sumi[i]+=a[i][j];
        }
        if(sumi[i]>maxn){
                maxn=sumi[i];
                maxi=i;
                maxc='r';//行 
         }
    }
    for(int j=0;j<m;j++){
        for(int i=0;i<n;i++){
            sumj[j]+=a[i][j];
        }
        if(sumj[j]>maxn){
                maxn=sumj[j];
                maxj=j;
                maxc='l';//列 
        }
    }
    long long ssum=0;
    for(int i=0;i<k;i++){
        ssum+=maxn;
        maxn=0;
        if(maxc=='r'){
            sumi[maxi]=0;
            for(int j=0;j<m;j++){
                sumj[j]-=a[maxi][j];
                a[maxi][j]=0;
                if(sumj[j]>maxn){
                maxn=sumj[j];
                maxj=j;
                maxc='l';//列 
            }
            }
            for(int i=0;i<n;i++){
                if(sumi[i]>maxn){
                maxn=sumi[i];
                maxi=i;
                maxc='r';//行 
            }
            }
        }else{
            sumj[maxj]=0;
            for(int i=0;i<n;i++){
                sumi[i]-=a[i][maxj];
                a[i][maxj]=0;
                if(sumi[i]>maxn){
                maxn=sumi[i];
                maxi=i;
                maxc='r';//行 
            }
        }
            for(int j=0;j<m;j++){
                if(sumj[j]>maxn){
                maxn=sumj[j];
                maxj=j;
                maxc='l';//列 
        }
            }
    }
    }
    cout<<ssum<<endl;
    return 0;
}

全部评论

(1) 回帖
加载中...
话题 回帖

本文相关内容

等你来战

查看全部

热门推荐