#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
const int maxn = 100 + 5;
char room[maxn][maxn];
int num[maxn];
int cnt[maxn];
int n;
int main()
{
while(~scanf("%d", & n))
{
memset(cnt, 0, sizeof(cnt));
for(int i = 0; i < n; i ++)
scanf("%s", room[i]);
for(int k = 0; k < n; k ++)
{
for(int i = 0; i < n; i ++)
{
bool flag = true;
for(int j = 0; j < n; j ++)
if(room[k][j] == room[i][j])
continue;
else
{
flag = false;
break;
}
if(flag)
cnt[k] ++;
}
}
sort(cnt, cnt + n);
printf("%d\n", cnt[n - 1]);
}
return 0;
}
题意:输入n。之后输入n×n的01矩阵。就是翻列。问最后可以有多少行全是1.
题解:其实质就是找行最多相同的数量。三个for循环直接搞定...然而我还是瞎比搞半天。比较两行,看是否相同,相同cnt[k] ++。最后输出最大的cnt即是结果。