1.预备知识
1.1map
1.每一元素对(pair)中的第一个值称之为关键字(key),每个关键字只能在map中出现一次;第二个称之为该关键字的对应值;
2.

//可以用key作为下标访问value
map<int, string> ID_Name;
ID_Name[2015] = "Tom";//如果已经存在key 2015,则会赋值修改,如果没有则插入

3.插入函数insert()

 std::map<char, int> mymap;
//下为函数声明。插入单个pair,并返回插入位置和成功标志,插入位置已经存在value时,插入失败
pair<iterator,bool> insert (const value_type& val);/*举例 */std::pair<std::map<char, int>::iterator, bool> ret;ret = mymap.insert(std::pair<char, int>('z', 500));//在指定位置插入,在不同位置插入效率是不一样的,因为涉及到重排
iterator insert (const_iterator position, const value_type& val);
/*举例*/
std::map<char, int>::iterator it = mymap.begin();mymap.insert(it, std::pair<char, int>('b', 300)); // 插入多个
void insert (InputIterator first, InputIterator last);
/*举例*/
std::map<char, int> anothermap;
anothermap.insert(mymap.begin(), mymap.find('c'));//c++11开始支持,使用列表插入多个
void insert (initializer_list<value_type> il);
/*举例*/
anothermap.insert({ { 'd', 100 }, {'e', 200} });

1.2 set
标准库提供set关联容器分为:
1,按关键字有序(升序)保存元素:set(只保存关键字的容器);multiset(关键字可重复出现的set);
2,无序集合:unordered_set;unordered_multiset(关键字可以重复出现)。
set就是关键字的简单集合。当只是想知道一个值是否存在时,set是最有用的。
在set中每个元素的值都唯一,而且系统能根据元素的值自动进行排序。

2.题目

输入一个n行m列的数据库(内容为字符串),要求判断该数据库是否满足条件:存在列 c1 和 c2,行 r1 和 r2,使得(r1,c1)和(r2,c1)相同,(r1,c2)和(r2,c2)相同。
满足则输出三行:
NO
r1 r2
c1 c2
且左边编号比右边小
否则输出:YES

3.代码

#include <cstdio>
#include <map>
#include <vector>
#include <set>using namespace std;
vector<string> Strcache; //ID转string
map<string, int> IDcache; //string转ID
//注:行数列数从1开始
void read(vector<int> base[], int n, int m) {for (int i = 1; i <= 10; i++) base[i].clear(); //清空getchar(); //丢掉上一行的 '\n'for (int r = 1; r <= n; r++) for (int c = 1; c <= m; c++){//读入单行单列的对应字符串string s = ""; char ch;while ((ch = getchar()) != ',' && ch != '\n') s += ch; //转换为ID,存入数据库中if (!IDcache.count(s)) {Strcache.push_back(s);IDcache[s] = (int)Strcache.size() - 1;}base[c].push_back(IDcache[s]);//数据库最终保存的是列[c]的各行字符串对应ID}
}
//遍历列,每两列遍历行检查是否有重复的二元组
void check(vector<int> base[], int n, int m) {//i 和 j 遍历列for (int i = 1; i <= m; i++) for (int j = i + 1; j <= m; j++) {map<pair<int, int>, int> mark;//扫描行for (int r = 0; r < base[i].size(); r++) {pair<int, int> p(base[i][r], base[j][r]);  //生成二元组if (!mark.count(p)) mark[p] = r;else {printf("NO\n");printf("%d %d\n", mark[p]+1, r+1);printf("%d %d\n", i, j);return;}}}printf("YES\n");
}int main() {int n, m;while (scanf("%d%d", &n, &m) == 2 && n) {vector<int> base[12]; // 10colsIDcache.clear(); Strcache.clear();read(base, n, m);check(base, n, m);}return 0;
}

UVA1592数据库相关推荐

  1. Spring Boot参考指南

    Spring Boot参考指南 作者 菲利普·韦伯,戴夫 Syer,约什 长,斯特凡 尼科尔,罗布 绞车,安迪·威尔金森,马塞尔 Overdijk,基督教 杜普伊斯,塞巴斯蒂安·德勒兹,迈克尔·西蒙斯 ...

  2. mysql 快捷查询数据库各表占用空间,mysql查看索引占用空间,mysql查看数据占用空间

    先贴一张图! 第一步,"很重要" 在mysql中,有一个创建之初自带的库information_schema,这个库中包含着数据库相关信息,查询数据占用空间就是使用该库,所以首先进 ...

  3. 数据库中自定义排序规则,Mysql中自定义字段排序规则,Oracle中自定义字段排序规则,decode函数的用法,field函数的用法

    数据库中自定义排序 场景:有一张banner表,表中有一个status字段,有0, 1, 2三个状态位,我想要 1,0,2的自定义排序(这里是重点),然后再进行之上对sequence字段进行二次排序( ...

  4. 创建数据库,指定数据库的字符集和编码顺序

    创建数据库,指定它的字符集和编码顺序 create database {数据库名称} CHARACTER SET {字符集} COLLATE {排序规则} 举例: create database co ...

  5. MybatisPlus忽略实体类中的非数据库字段、JPA忽略实体类中的非数据库字段、HeHibernate忽略实体类中的非数据库字段

    mybatis plus忽略映射字段时可以在实体类属性上使用以下注解: @TableField(exist = false):表示该属性不为数据库表字段,但又是必须使用的. @TableField(e ...

  6. IDEA中根据数据库自动生成实体类,并自定义所生成的实体类中的注解 @Table @Id @...

    使用IDEA项目添加Hibernate扩展,生成实体类并配置实体类中的注解 一.使用Hibernate自动生成实体类 1.在项目上右键,选择Add Framework Support找到 Hibern ...

  7. Mysql函数group_concat、find_in_set 多值分隔字符字段进行数据库字段值翻译

    Mysql函数group_concat.find_in_set进行数据库字段值翻译 场景 配方表:记录包含的原料 sources表示原料,字段值之间用逗号分隔 原料表:对应原料id和原料名称 现需要查 ...

  8. java 捕获异常并存入数据库_java异常处理,报异常的话怎么处理对象值,并持久化到数据库中...

    展开全部 //没看到有人回e68a843231313335323631343130323136353331333365646233答你,我还没学到框架,不知道那个是不是可以很便捷操作你说的这样过程 / ...

  9. linux修改mysql密码sa_如何修改SA口令,数据库SA密码怎么改?

    [问题现象]安装数据库的时候设置过SA口令,安装后不记得了?有没有办法可以修改数据库SA口令? [原因分析]各版本数据库更改SA口令的方法不一样,一般MSDE2000数据库安装时没有SA口令,SQL ...

最新文章

  1. mysql oracle查询速度慢_oracle查看执行最慢与查询次数最多的sql语句
  2. “CV_GRAY2BGR”: 未声明的标识符
  3. UVA10905孩子们的游戏
  4. Extreme Extension 思维,dp
  5. 历史数据如何处理_数据库表数据量大读写缓慢如何优化(1)【冷热分离】
  6. ssh整合学习(1)
  7. 配置DNS辅助服务器:DNS系列之四
  8. Android应用开发—Intent组件详解
  9. 小程序 | 微信小程序多图上传(点击上传、可修改删除与放大回显)
  10. 联邦学习在视觉领域的应用,揭秘2020年AAAI人工智能创新应用奖获奖案例!
  11. datagrid不显示 easy_VBA程序报错,用调试三法宝,bug不存在的
  12. 装机主板抽象工厂模式(Abstract Factory)
  13. 教师个人计算机研修总结,计算机研修总结
  14. Common Digester学习
  15. upgrade-insecure-requests
  16. 【综述】(MIT博士)林达华老师-quot;概率模型与计算机视觉”
  17. [数据分析] RFM分析方法
  18. RTKLIB中的各种AR mode 详解
  19. 华为鸿蒙系统超级终端,华为发布鸿蒙OS Connect 打造鸿蒙硬件“超级终端”概念...
  20. 胡适曾劝女作家苏雪林不要骂鲁迅

热门文章

  1. codemirror 只读模式(vue)
  2. 二叉树广度和深度遍历的全部算法
  3. 用cocos creator实现像素风格的微信跳一跳小游戏。
  4. win7系统缩小图片大小的详细步骤--win7w.com
  5. python异常处理机制例题_16.python异常处理
  6. 【BP靶场portswigger-服务端6】信息泄露漏洞-5个实验(全)
  7. yolov5训练自己的数据集并计算mAP
  8. 射频中的 IM3、IIP3、OIP3、G、P1dB指标之间的关系
  9. 地铁三号线 - 95后的财务自由
  10. 安全沙箱技术赋能企业转型,提效200%!