#include<iostream>
#include<cstdio>
using namespace std;
int N,M,K;
int data[100][20];
//int visit[20];
int snum;
int signalnum(int data[100][20])
{
int num=0;
for(int i=0;i<N;i++)
{
int flag=1;
for(int j=0;j<M;j++)
{
flag=flag&&data[i][j];
}
num+=flag;
};
return num;
}
void dfs(int data[100][20],int nnum,int lnum,int lastnum)
{
int input[100][20];
if(lnum%2==1)
{
for(int i=0;i<N;i++)
data[i][nnum]=(data[i][nnum]==1?0:1);
}
if(lastnum==0)
{
int curnum = signalnum(data);
if(curnum>snum)
snum=curnum;
return;
}
if(nnum==M-2)
{
dfs(data,nnum+1,lastnum,0);
return;
}
for(int i=0;i<=lastnum;i++)
{
for(int j=0;j<N;j++)
for(int k=0;k<M;k++)
input[j][k]=data[j][k];
dfs(input,nnum+1,i,lastnum-i);
}
}
int main()
{
int T;
cin>>T;
for(int t=0;t<T;t++)
{
int input[100][20];
for(int i=0;i<100;i++)
for(int j=0;j<20;j++)
{
data[i][j]=0;
input[i][j]=0;
}
snum=0;
cin>>N>>M>>K;
for(int i=0;i<N;i++)
for(int j=0;j<M;j++)
cin>>data[i][j];
for(int i=0;i<=K;i++)
{
for(int j=0;j<N;j++)
for(int k=0;k<M;k++)
input[j][k]=data[j][k];
dfs(input,0,i,K-i);
}
cout<<"Case #"<<t+1<<endl;
cout<<snum<<endl;
}
return 0;
}
ahaha ahaha signal
最新推荐文章于 2021-12-05 19:58:00 发布