其他分享
首页 > 其他分享> > 矩阵消除计划

矩阵消除计划

作者:互联网

01串枚举行,贪心列

#include<stdio.h>
#include<string.h>
#include<algorithm>
using namespace std;
int a[20][20],b[20],sh[20],sl[20];
int n,m,k;
long long ans=0;
int deal(int x)
{
    memset(b,0,sizeof(b));
    int i=1,cnt=0;
    while(x)
    {
        if(x&1)
        {
            cnt++;
            b[i]=1;
        }
        x>>=1;
        i++;
    }
    return cnt;
}
int main()
{
    scanf("%d %d %d",&n,&m,&k);
    for(int i=1;i<=n;i++)
    {
        for(int j=1;j<=m;j++)
        {
            scanf("%d",&a[i][j]);
            sh[i]+=a[i][j];
        }
    }
    if(k>n)
        k=n;
    if(k>m)
        k=m;
    for(int T=0;T<=((1<<n)-1);T++)
    { long long temp=0;
        int numh=deal(T);
        int numl=k-numh;
        if(numh>=0&&numh<=n&&numl>=0&&numl<=m)
         {
             for(int i=1;i<=n;i++)
             {
                 if(b[i])
                    temp+=sh[i];
             }
             memset(sl,0,sizeof(sl));
             for(int i=1;i<=n;i++)
             {
                 for(int j=1;j<=m;j++)
                 {
                     if(!b[i])
                        sl[j]+=a[i][j];
                 }

             }
             sort(sl+1,sl+m+1);

             for(int i=m;i>=1&&numl;i--)
             {
                 temp+=sl[i];
                 numl--;
             }
             ans=max(ans,temp);
                      }

         else
            continue;

    }
    printf("%lld\n",ans);
}

 

标签:cnt,20,int,矩阵,计划,&&,ans,include,消除
来源: https://www.cnblogs.com/aacm/p/15035158.html