给定一个 矩阵变换(秋季每日一题 33)_思维题矩阵变换(秋季每日一题 33)_哈希表_02

你可以选择若干列(也可以不选),并将这些列上的所有元素进行变换(矩阵变换(秋季每日一题 33)_哈希表_03矩阵变换(秋季每日一题 33)_i++_04矩阵变换(秋季每日一题 33)_i++_04矩阵变换(秋季每日一题 33)_哈希表_03)。

你的目标是使得矩阵中有尽可能多的行满足:一行中的所有元素都为 矩阵变换(秋季每日一题 33)_哈希表_03

输出可以得到的满足条件的行的最大数量。

输入格式
第一行包含整数 矩阵变换(秋季每日一题 33)_哈希表_08

接下来 矩阵变换(秋季每日一题 33)_哈希表_08 行,每行包含一个长度为 矩阵变换(秋季每日一题 33)_哈希表_08矩阵变换(秋季每日一题 33)_哈希表_02

输出格式
输出可以得到的满足条件的行的最大数量。

数据范围
矩阵变换(秋季每日一题 33)_#include_12
输入样例1:

4
0101
1000
1111
0101

输出样例1:

2

输入样例2:

3
111
111
111

输出样例2:

3

#include<iostream>

using namespace std;

const int N = 110;

int n;
string s[N];

int main(){

cin >> n;
for(int i = 0; i < n; i++) cin >> s[i];

int res = 1;
for(int i = 0; i < n; i++){
int cnt = 1;
for(int j = 0; j < i; j++)
if(s[i] == s[j])
cnt++;

res = max(res, cnt);
}

cout << res << endl;

return 0;
}
#include<iostream>
#include<unordered_map>

using namespace std;

int n;
string s;
unordered_map<string, int> str;

int main(){

cin >> n;
for(int i = 0; i < n; i++) cin >> s, str[s]++;

int res = 1;
for(auto a: str) res = max(res, a.second);

cout << res << endl;

return 0;
}