UVA 1592 DataBase
思路:
知识补充:
①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 ;
}
UVA 1592 DataBase的更多相关文章
- UVa 1592 Database(巧用map)
Peter studies the theory of relational databases. Table in the relational database consists of value ...
- UVA - 1592 Database 枚举+map
思路 直接枚举两列,然后枚举每一行用map依次记录每对字符串出现的是否出现过(字符串最好先处理成数字,这样会更快),如果出现就是"NO",否则就是"YES". ...
- UVa - 1592 Database(STL,优化)
给一个n行m列的数据库表格,问有没有两个行 r1,r2 和 c1,c2,满足(r1,r2)的元素=(c1,c2)的元素. n≤10000,m≤10. 直接枚举4个肯定会T的.可以只枚举c1 c2,然后 ...
- uva 1592 Database (STL)
题意: 给出n行m列共n*m个字符串,问有没有在不同行r1,r2,有不同列c1,c2相同.即(r1,c1) = (r2,c1);(r1,c2) = (r2,c2); 如 2 3 123,456,789 ...
- UVa 1592 Database (map)
题意:给出n行m列的数据库(数据范围: n 1~10000, m 1~10), 问你能不能找出两行r1, r2,使得这两行中的c1, c2列是一样的, 即(r1,c1)==(r2,c1) && ...
- Database UVA - 1592
对于每组数据,首先通过一个map将每个字符串由一个数字代替,相同的字符串由相同数字代替,不同的字符串由不同数字代替.那么题目就变为了询问是否存在行r1,r2以及列c1,c2使得str[r1][c1]= ...
- 【例题5-9 UVA - 1592】Database
[链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 枚举不同的列是哪两个列,然后枚举行. 把那一行的这两列的字符接在一起,然后用map判重. 为了防止逐个比较字符. 可以一开始先把字符 ...
- UVa 1592 数据库(c++pair)
Input Input contains several datasets. The first line of each dataset contains two integer numbersn ...
- UVa第五章STL应用 习题((解题报告))具体!
例题5--9 数据库 Database UVa 1592 #include<iostream> #include<stdio.h> #include<string.h&g ...
随机推荐
- django之跨表查询及添加记录
一:创建表 书籍模型: 书籍有书名和出版日期,一本书可能会有多个作者,一个作者也可以写多本书,所以作者和书籍的关系就是多对多的关联关系(many-to-many); 一本书只应该由一个出版商出 ...
- MySQL监控系统Lepus的搭建
现在流行的监控系统很多,选择一个合适自己的就可以了,例如Zabbix.Nagios:监控MySQL为主的有MySQLMTOP.Lepus.本文主要介绍快速部署lepus以及监控MySQL,因为作为DB ...
- Allegro PCB Design GXL (legacy) 将指定的层导出为DXF
Allegro PCB Design GXL (legacy) version 16.6-2015 1.菜单:Display > Color/Visibility... 2.打开Color Di ...
- jsp和
- Github版本管理以及git使用
1.git客户端编译安装 同步系统时间服务器 ntpdate cn.ntp.org.cn 安装依赖包: [root@baolin ~]# yum install epel-release -y [ro ...
- C# 合并两张图片
private BitmapSource CombineImage(BitmapSource img1,BitmapSource img2) { var composeImg = new Render ...
- 监控宝设置snmp
https://wiki.jiankongbao.com/doku.php/%E6%96%87%E6%A1%A3:snmp%E8%AF%8A%E6%96%AD
- 磁盘blk_update_request: I/O error
https://www.cnblogs.com/chris-cp/p/6340289.html
- 学习笔记: 反射应用、原理,完成扩展,emit动态代码
using Ruanmou.DB.Interface; using Ruanmou.DB.MySql; using Ruanmou.DB.SqlServer; using Ruanmou.Model; ...
- Redis分布式锁(ServiceStack.Redis实现)
1.设计思路 由于Redis是单线程模型,命令操作原子性,所以利用这个特性可以很容易的实现分布式锁.A用户端在Resdis写入1个KEY,其他的用户无法写入这个KEY,实现锁的效果.A用户使用完成后释 ...