N题
题意:
输入 n 行 n 列字符,只包括 0 ~ 9 和 A ~ Z,A ~ Z 用来表示 10 ~ 35。
若对于每行每列,都没有重复的字符,则是 Latin Square,否则输出 “No”;
如果是Latin,判断 第一行 和 第一列 是否是 0 1 2 3…… 这样递增的。若是,输出 “Reduced”,否则输出 “Not Reduced” .
思路:
首先判断是不是 Latin,逐行逐列判断即可。
- 用 set 来去重,若 size 相同,则没有重复的字符
然后判断第一行 和 第一列是不是按规则增长的
- 直接循环判断即可
这道题被读题坑死了,先是没注意到 A ~ Z 用来表示 10 ~ 35;后来又没看见增长的规则,想当然的认为后一个比前一个大即可。以后一定要仔细读题。
还有很坑的一个点,就是 vj 上是有多组输入的情况,但他没说。计蒜客上不用写多组输入就能过。
#include <bits/stdc++.h>
using namespace std;
// 先判断是否Latin
// 是的话再判断 第一行 第一列 是否递增 递增啊!!递增啊!!我是傻子
int main()
{
int n;
//scanf("%d", &n);
while(~scanf("%d", &n)){
int flag=0, a[40][40];
string ch;
set<int> s;
for(int i=0