这题是一道思维题,做法简单来说就是统计1 、0出现的次数,如果1或0是唯一的,并且刚好从该位置开始,那么一定不能形成回文,输出N,其他情况直接输出Y
#include<bits/stdc++.h>
using namespace std;
int main() {
int T;
cin >> T;
while (T--) {
int n, m;
cin >> n >> m;
vector<string> s(n, string(m, '0'));
int a[50] = {}; //猜猜为什么开50,因为0,1的ASC码是48和49,注意了,i里面的全是字符,所以如果此时是‘1’,其实就是a[49]++;
for (auto &i : s) {
cin >> i;
for (auto &j : i) {
a[j]++;
}
}
for (auto &i : s) {
for (auto &j : i) {
cout << "YN"[a[j] == 1];
}
cout << '\n';
}
}
return 0;
}
这个写法是我学习了验题人的,我觉得她写的很好,auto很方便,包括"YN"[]这种神奇的东西也是第一次见

京公网安备 11010502036488号