1、题目描述:
输入一个n行m列的数据库(1<=n<=10000,1<=m<=10),是否存在两个不同行r1,r2和两个不同列c1,c2,使得这两行和两列相同。
2、输入示例:
3 3
how to compete in acm icpc
peter
peter@qq.com
how to win acm icpc
michael
michael@qq.com
notes from champion
michael
michael@qq.com
3、输出示例:
rows:2,3
cols:2,3
4、题目分析:
常规是写4重循环,找i,j,m,n,使得i行m列与j行n列的内容相同。理论可行,但实际会超时。考虑的做法是:遍历列m、n,固定列后再扫描行(相当于3重循环),把扫描得到的该行、两列对应的内容作为二元组存储到map中,即<二元组,对应的行>。若map中已存在该映射,那么当前行、映射中的行即为求解。为了存储便捷,参考UVa 12096(集合栈计算机)将字符串编号,映射为int型。
5、代码实现:
#include <iostream>
#include <map>
#include <vector>
using namespace std;
typedef pair<int, int