题目 :给出N*M大小的字符串矩阵,每个格子有个字符串,求出不同的两行和两列,使得这两行相等.
123457257看表格,就是2行3列和2行3列,确定的这四个元素,上下对应相等.
思路:1.写一个发ID函数,把每个字符串编号.用map来存(因为等会要用这个编号)
int ID(const string &s){
if(!id.count(s)){
id[s]=cnt++;
}
return id[s];
}
2.注意处理分割字符串,使用substr等函数可以展开某个字符串用法看代码.string::pos是一个常数 通常是find找不到就返回这个值。
3.注意扫时候的技巧。观察到列数较少,就先确定两列,扫描行.遇到新的一行,就把对应行列的那两个数存进一个新开的map(这个map在换列的时候要初始化,所以不如在换列上面那个函数声明一下),
因为map自带查重,然后每次count一下新进的那个二元组(用pair存那2数字然后塞进map)是否重复,重复了就代表找到了,退出该函数.
完整代码:(用getline的时候要注意有没有吃到上一行的回车)
#include
#define maxr 10000+5
#define maxc 15
using namespace std;
typedef pair PII;
map id;
int n,m,cnt=0;
int db[maxr][maxc];
int ID(const string &s){
if(!id.count(s)){
id[s]=cnt++;
}
return id[s];
}
void findd(){
for(int c1=0;c1
关注
打赏
最近更新
- 深拷贝和浅拷贝的区别(重点)
- 【Vue】走进Vue框架世界
- 【云服务器】项目部署—搭建网站—vue电商后台管理系统
- 【React介绍】 一文带你深入React
- 【React】React组件实例的三大属性之state,props,refs(你学废了吗)
- 【脚手架VueCLI】从零开始,创建一个VUE项目
- 【React】深入理解React组件生命周期----图文详解(含代码)
- 【React】DOM的Diffing算法是什么?以及DOM中key的作用----经典面试题
- 【React】1_使用React脚手架创建项目步骤--------详解(含项目结构说明)
- 【React】2_如何使用react脚手架写一个简单的页面?