博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
UVa1592_数据库
阅读量:5234 次
发布时间:2019-06-14

本文共 1564 字,大约阅读时间需要 5 分钟。

#include
#include
#include
#include
#include
#include
#include
using namespace std;typedef pair
PII;const int maxr = 10000 + 5;const int maxc = 10 + 5;int m, n, db[maxr][maxc], cnt; //m为当前的行数,n为当前列数,db储存所有的id值,cnt形成idmap
id; //将先将字符串映射成id值 int ID(const string& s) //本题重要思想!转换成id值 { if (! id.count(s)) //如果字符串s的数目为0 { id[s] = ++cnt; //形成id值 } return id[s]; //否则直接返回对应的id值}//相邻两列情况下 枚举每行 void find() { for (int c1 = 0; c1 < m; c1++) { for (int c2 = c1+1; c2 < m; c2++) //相邻两列向每行枚举 { map
d; //将二元组映射成行数 for (int i = 0; i < n; i++) //枚举每行 { PII p = make_pair(db[i][c1], db[i][c2]);//两列的id值形成一个二元组 //make_pair()能从两个变量构造一个pair形成一个二元组 if (d.count(p)) { //二元组出现的次数不止一次 cout << "No\n"; cout << d[p] + 1 << ' ' << i+1 << endl; //打印行(2行) cout << c1 + 1 << ' ' << c2+1 << endl; //打印两列 return; } d[p] = i; //否则将该行(key)映射到相应的二元组中去 } } cout << "YES\n" << endl; }}int main(){ string s; while (getline(cin, s)) { stringstream ss(s); if (! (ss >> n >> m)) //行列输入错误,break; break; cnt = 0; //每组数据形成id的值初始化为0 id.clear(); //每次都清空数据 for (int i = 0; i < n; i++) { getline(cin, s); //输入一行字符串,每列用 “,”隔开 int lastpos = -1; for (int j = 0; j < m; j++) { int p = s.find(',', lastpos + 1); //从lastpos+1开始,寻找在',' //在字符串第一次出现的位置--相当于每列结束 if (p == string::npos) //最后一列之后没有逗号 p = s.length(); //将一列的开始到该列结束位置的字符串形成id值储存在db中 db[i][j] = ID(s.substr(lastpos+1, p-lastpos-1)); lastpos = p; //将本列字符串最后的位置置为lastpos,等下一次开始位置即为下一列 } } find(); } return 0;}

 

转载于:https://www.cnblogs.com/douzujun/p/5414203.html

你可能感兴趣的文章
VMware12 + Ubuntu16.04 虚拟磁盘扩容
查看>>
水平垂直居中
查看>>
MySQL简介
查看>>
设计模式之桥接模式(Bridge)
查看>>
jquery的$(document).ready()和onload的加载顺序
查看>>
Python Web框架Django (五)
查看>>
.net学习之继承、里氏替换原则LSP、虚方法、多态、抽象类、Equals方法、接口、装箱拆箱、字符串------(转)...
查看>>
【codevs1033】 蚯蚓的游戏问题
查看>>
【程序执行原理】
查看>>
python的多行注释
查看>>
连接Oracle需要jar包和javadoc文档的下载
查看>>
UVA 10976 - Fractions Again?!
查看>>
Dreamweaver cc新版本css单行显示
查看>>
【android】安卓的权限提示及版本相关
查看>>
JavaScript可否多线程? 深入理解JavaScript定时机制
查看>>
IOS基础学习
查看>>
PHP 导出 Excell
查看>>
Java基础教程——网络基础知识
查看>>
自己到底要的是什么
查看>>
Kruskal基础最小生成树
查看>>