矩阵变换
给定一个 n×n 的 01矩阵。
你可以选择若干列(也可以不选),并将这些列上的所有元素进行变换(1 变 0,0 变 1)。
你的目标是使得矩阵中有尽可能多的行满足:一行中的所有元素都为 1。
输出可以得到的满足条件的行的最大数量。
输入格式
第一行包含整数 n。
接下来 n行,每行包含一个长度为 n 的 01字符串,表示整个矩阵。
输出格式
输出可以得到的满足条件的行的最大数量。
数据范围1≤n≤100
输入样例1:
4
0101
1000
1111
0101
输出样例1:
2
输入样例2:
3
111
111
111
输出样例2:
3
每次只能选择若干个列让这些列里面所有元素进行0->1或者1->0的变换,所以我们没有办法让 不全部为1的一列 全部变成1。
再来看相同的两行,我们绝对有办法让他们全部为1。相同的两行指的是完全相同的两行。
再来看相同的三行,我们绝对有办法让他们全部为1。相同的三行指的是完全相同的三行。
四,四,四
…
以此类推,找出相同行数最多的即可!!!!!
//如此简单
#include <iostream>
#include <map>
#include <string>
using namespace std;
int main()
{
map<string, int> mp;
string s;
int n, maxc = 0;
cin >> n;
while (n--) {
cin >> s;
mp[s]++;
int tempc = mp[s];
maxc = max(tempc, maxc);
}
cout << maxc << endl;
return 0;
}
最后看题解发现思路居然一模一样,
😁😁😁😁😁😁😁✈✈