昨晚上终于把这题AC了,太晚了于是倒头就去睡觉了,现在来写下博客。这题第一开始就没看懂题目,(一直不明白是否会有多个满足题意的行、列,如果有,按题目说的只有两行的话输出具体哪一个满足题意的也并没有指出,于是很是困惑,不过后来找到了WA的原因后觉得可能数据中就是有多个满足题意的,只输出一个就好了)后来还是没懂,按照书上思路写了代码之后WA,于是开始调,一点点的用标程中的代码块替换自己的,替换之后提交,发现WA后,把这段代码该回自己的,再用标程的另一个程序块替换自己程序中等价的部分,最后终于AC了,并且找到了自己的错误。
先发下自己没有修改前的WA版代码:
#include <cstdio>
#include <iostream>
#include <map>
#include <cstring>
#include <vector>
#include <sstream>
using namespace std;
typedef pair<int,int> PII;
int idcnt;
string str, substring;
vector<int> data[15];
map<string, int> id;
map<PII, int> enumrow;
void strcut(int);
int main()
{
freopen("New Text Document.txt","r",stdin);
freopen("Output.txt","w",stdout);
ios::sync_with_stdio(false);
int n, m;
while(cin>>n>>m)
{
bool flag = true;
cin.get();
idcnt = 0;
for(int i = 0; i < n; i++)
{
getline(cin, str);
strcut(i);
}
for(int i = 0; i < m; i++)
for(int j = i+1; j < m; j++)
{
enumrow.clear();
for(int k = 1; k < n; k++)
{
PII row = make_pair(data[i][k], data[j][k]);
if(!enumrow.count(row))
enumrow[row] = k;
else
{
int rr = enumrow[row];
printf("NO\n%d %d\n%d %d\n", rr+1, k+1, i+1, j+1);
flag = false;
break;
}
}