UVA 1592 DataBase
2024-09-04 01:34:36
思路:
知识补充:
①make_pair和pair:
/*pair是将2个数据组合成一个数据,当需要这样的需求时就可以使用pair,
如stl中的map就是将key和value放在一起来保存。
另一个应用是,当一个函数需要返回2个数据的时候,
可以选择pair。 pair的实现是一个结构体,
主要的两个成员变量是first second 因为是使用struct不是class,所以可以直接使用pair的成员变量。
2 make_pair函数
template pair make_pair(T1 a, T2 b) { return pair(a, b); }
很明显,我们可以使用pair的构造函数也可以使用make_pair来生成我们需要的pair。*/
②string的find函数:
/*string查找函数,都有唯一的返回类型,那就是size_type,
即一个无符号整数(按打印出来的算)。
若查找成功,返回按查找规则找到的第一个字符或子串的位置;
若查找失败,返回npos,即-1(打印出来为4294967295)。
s.find(a,pos)从pos开始查找a
*/
③string的substr函数:
s.substr(startPos,len);从startPos开始,截取长度为len的子串。
#include<iostream>
#include<cstdio>
#include<vector>
#include<string>
#include<map>
#include<sstream>
using namespace std; typedef pair<int,int> PII;
/*pair是将2个数据组合成一个数据,当需要这样的需求时就可以使用pair,
如stl中的map就是将key和value放在一起来保存。
另一个应用是,当一个函数需要返回2个数据的时候,
可以选择pair。 pair的实现是一个结构体,
主要的两个成员变量是first second 因为是使用struct不是class,所以可以直接使用pair的成员变量。 2 make_pair函数 template pair make_pair(T1 a, T2 b) { return pair(a, b); } 很明显,我们可以使用pair的构造函数也可以使用make_pair来生成我们需要的pair。*/
const int maxr = + ;
const int maxc = + ; int m, n, db[maxr][maxc], cnt; map<string, int> id;
int ID(const string& s) {
if(!id.count(s)) {
id[s] = ++cnt;
}
return id[s];
} void find() {
for(int c1 = ; c1 < m; c1++)
for(int c2 = c1+; c2 < m; c2++) {
map<PII, int> d;
for(int i = ; i < n; i++) {
PII p = make_pair(db[i][c1], db[i][c2]);
if(d.count(p)) {
printf("NO\n");
printf("%d %d\n", d[p]+, i+);//输出行
printf("%d %d\n", c1+, c2+);//输出列
return;
}
d[p] = i;
}
}
printf("YES\n");
} int main() {
string s;
while(getline(cin, s)) {
stringstream ss(s);
if(!(ss >> n >> m)) break;
cnt = ;
id.clear();
for(int i = ; i < n; i++) {
getline(cin, s);
int lastpos = -;
for(int j = ; j < m; j++) {
int p = s.find(',', lastpos+);
/*string查找函数,都有唯一的返回类型,那就是size_type,
即一个无符号整数(按打印出来的算)。
若查找成功,返回按查找规则找到的第一个字符或子串的位置;
若查找失败,返回npos,即-1(打印出来为4294967295)。
s.find(a,pos)从pos开始查找a
*/
if(p == string::npos) p = s.length();
db[i][j] = ID(s.substr(lastpos+, p - lastpos - ));
/*
s.substr(startPos,len);
*/
lastpos = p;
}
}
find();
}
return ;
}
最新文章
- Apache Rewrite 拟静态配置
- C primer plus 练习题 第三章
- web跨页弹窗选值
- C#快速排序算法基础入门篇
- Shell的输入输出
- C# window 窗体 保持最前显示
- 【Swift】学习笔记(一)——熟知 基础数据类型,编码风格,元组,主张
- HTML canvas图像裁剪
- html表单 2017-03-10PM
- 关于mui选择器的使用
- python——面向对象进阶
- Oracle 查询结果集行数分析
- Spark 用户自定义函数 Java 示例
- LG3834 可持久化线段树1
- C#中的委托和事件 - Part.1
- hdu5289 单调队列
- Codeforces Round #517 (Div. 2) C. Cram Time(思维+贪心)
- iOS常用RGB颜色的色值表
- bzoj 5301 [Cqoi2018]异或序列 莫队
- zedgraph控件怎么取得鼠标位置的坐标值(转帖)
热门文章
- mysql 语句的使用清库数据转移
- windows下KafkaOffsetMonitor下载及安装
- Android Studio编译OsmAnd出现警告:GeoPointParserUtil.java使用或覆盖了已过时的 API。有关详细信息请使用-Xlint:deprecation重新编译
- linux系统(CentOS7)虚拟机上安装oracle 11g,解决oracle图形界面卡住无法点击next问题
- linux改权限
- SPOJ 1812 LCS2
- Flink运行在yarn上
- 使用link rel=";shortcut icon";为网页标题加图标
- JMeter学习笔记2-图形界面简单介绍
- 2018牛客网暑假ACM多校训练赛(第四场)D Another Distinct Values 构造