Description
Ohana Matsumae is trying to clean a room, which is divided up into an n by n grid of squares. Each square is initially either clean or dirty. Ohana can sweep her broom over columns of the grid. Her broom is very strange: if she sweeps over a clean square, it will become dirty, and if she sweeps over a dirty square, it will become clean. She wants to sweep some columns of the room to maximize the number of rows that are completely clean. It is not allowed to sweep over the part of the column, Ohana can only sweep the whole column.
Return the maximum number of rows that she can make completely clean.
Input
The first line of input will be a single integer n (1 ≤ n ≤ 100).
The next n lines will describe the state of the room. The i-th line will contain a binary string with n characters denoting the state of the i-th row of the room. The j-th character on this line is ‘1‘ if the j-th square in the i-th row is clean, and ‘0‘ if it is dirty.
Output
The output should be a single line containing an integer equal to a maximum possible number of rows that are completely clean.
Sample Input1
Input
40101100011110101
Output
2
Sample Input2
Input
3111111111
Output
3
题意:
给定一个由n*n块地砖铺成的房间,每块砖用0表示未打扫,1表示已打扫。
要求打扫时只能整列地扫,未打扫的会变为已打扫,已打扫的会变为未打扫。
即1会变成0,而0会变成1,
求一种打扫方案,使得打扫完后整行地砖均为已打扫的行数最大。
分析:
如果两行地砖状态完全相同,那么无论如何打扫,这两行地砖的状态始终都是完全相同的(因为打扫的时候必须打扫整列)。
要使最后整行为1的行数最大,就是求开始时整行地砖处于相同状态的行数最大。
所以只需将整行看做一个字符串,将出现最多的字符串的次数输出。
1 #include<iostream> 2 #include<string> 3 using namespace std; 4 #define maxn 100 5 int n,count=0; 6 string a[maxn]; 7 int main() 8 {int x=0; 9 cin>>n; 10 for(int i=0;i<n;i++) 11 cin>>a[i]; 12 for(int l=0;l<n;l++) 13 { count=0; 14 for( int k=l;k<n;k++) 15 if(a[l]==a[k]) 16 count++; 17 if(count>x) 18 x=count; 19 } 20 cout<<x<<endl; 21 return 0; 22 }