UVa1592_数据库
#include<iostream>
#include<cstdio>
#include<vector>
#include<utility>
#include<map>
#include<sstream>
#include<string>
using namespace std; typedef pair<int, int> PII; const int maxr = + ;
const int maxc = + ; int m, n, db[maxr][maxc], cnt; //m为当前的行数,n为当前列数,db储存所有的id值,cnt形成id map<string, int> 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 = ; 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]);//两列的id值形成一个二元组
//make_pair()能从两个变量构造一个pair形成一个二元组
if (d.count(p)) { //二元组出现的次数不止一次
cout << "No\n";
cout << d[p] + << ' ' << i+ << endl; //打印行(2行)
cout << c1 + << ' ' << c2+ << 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 = ; //每组数据形成id的值初始化为0
id.clear(); //每次都清空数据
for (int i = ; i < n; i++) {
getline(cin, s); //输入一行字符串,每列用 “,”隔开
int lastpos = -;
for (int j = ; j < m; j++) {
int p = s.find(',', lastpos + ); //从lastpos+1开始,寻找在','
//在字符串第一次出现的位置--相当于每列结束
if (p == string::npos) //最后一列之后没有逗号
p = s.length();
//将一列的开始到该列结束位置的字符串形成id值储存在db中
db[i][j] = ID(s.substr(lastpos+, p-lastpos-));
lastpos = p; //将本列字符串最后的位置置为lastpos,等下一次开始位置即为下一列
}
}
find();
}
return ;
}
UVa1592_数据库的更多相关文章
- JSP应用开发 -------- 电纸书(未完待续)
http://www.educity.cn/jiaocheng/j9415.html JSP程序员常用的技术 第1章 JSP及其相关技术导航 [本章专家知识导学] JSP是一种编程语言,也是一种动 ...
- nodejs进阶(6)—连接MySQL数据库
1. 建库连库 连接MySQL数据库需要安装支持 npm install mysql 我们需要提前安装按mysql sever端 建一个数据库mydb1 mysql> CREATE DATABA ...
- GreenDao 数据库:使用Raw文件夹下的数据库文件以及数据库升级
一.使用Raw文件夹下的数据库文件 在使用GreenDao框架时,数据库和数据表都是根据生成的框架代码来自动创建的,从生成的DaoMaster中的OpenHelper类可以看出: public sta ...
- ASP.NET MVC with Entity Framework and CSS一书翻译系列文章之第二章:利用模型类创建视图、控制器和数据库
在这一章中,我们将直接进入项目,并且为产品和分类添加一些基本的模型类.我们将在Entity Framework的代码优先模式下,利用这些模型类创建一个数据库.我们还将学习如何在代码中创建数据库上下文类 ...
- Java MyBatis 插入数据库返回主键
最近在搞一个电商系统中由于业务需求,需要在插入一条产品信息后返回产品Id,刚开始遇到一些坑,这里做下笔记,以防今后忘记. 类似下面这段代码一样获取插入后的主键 User user = new User ...
- 在SQL2008查找某数据库中的列是否存在某个值
在SQL2008查找某数据库中的列是否存在某个值 --SQL2008查找某数据库中的列是否存在某个值 create proc spFind_Column_In_DB ( @type int,--类型: ...
- 分享一个SQLSERVER脚本(计算数据库中各个表的数据量和每行记录所占用空间)
分享一个SQLSERVER脚本(计算数据库中各个表的数据量和每行记录所占用空间) 很多时候我们都需要计算数据库中各个表的数据量和每行记录所占用空间 这里共享一个脚本 CREATE TABLE #tab ...
- SQL Server2014 SP2新增的数据库克隆功能
SQL Server2014 SP2新增的数据库克隆功能 创建测试库 --创建测试数据库 create database testtest use testtest go --创建表 )) --插入数 ...
- 数据库优化案例——————某市中心医院HIS系统
记得在自己学习数据库知识的时候特别喜欢看案例,因为优化的手段是容易掌握的,但是整体的优化思想是很难学会的.这也是为什么自己特别喜欢看案例,今天也开始分享自己做的优化案例. 最近一直很忙,博客产出也少的 ...
随机推荐
- git之tag
参考:git命令之git tag 给当前分支打标签 1.git tag //查看已有标签 2.创建本地标签 git tag tag_name //创建标签 git tag -a v0.1.2 -m ...
- Win7平台下React-Native开发之Android项目打包发布流程
一.bundle文件 React-Native开发步骤中,有一个步骤是使用命令 react-native start 去启动一个基于Node.js的服务,名字为packager.这个packager的 ...
- Unity内存申请和释放
转自:http://www.jianshu.com/p/b37ee8cea04c 1.资源类型 GameObject, Transform, Mesh, Texture, Material, Shad ...
- 专业版Unity技巧分享:使用定制资源配置文件
http://unity3d.9tech.cn/news/2014/0116/39639.html 通常,在游戏的开发过程中,最终会建立起一些组件,通过某种形式的配置文件接收一些数据.这些可能是程序级 ...
- [转载]MySQL5.5 配置文件 my.ini 1067错误
原文链接:http://blog.csdn.net/xiaochunyong/article/details/7438200 解压mysql-5.5.22-win32.zip后的目录中有5个my-xx ...
- 剑指Offer 两个链表的第一个公共结点
题目描述 输入两个链表,找出它们的第一个公共结点. 思路: 题目说的很笼统,应该是有2个链表,找出公共点,第一个公共点后面的链表是共同所有的.可以用map做,直接检测map里有没有出现这个节点. ...
- 剑指Offer 连续子数组的最大和
题目描述 HZ偶尔会拿些专业问题来忽悠那些非计算机专业的同学.今天测试组开完会后,他又发话了:在古老的一维模式识别中,常常需要计算连续子向量的最大和,当向量全为正数的时候,问题很好解决.但是,如果向量 ...
- python字符串函数
- MorkDown 常用语法总结
推荐一款很好用的markdown编辑器:http://www.typora.io/ 基本技巧: 代码高亮 如果你只想高亮语句中的某个函数名或关键字,可以使用``实现 通常编辑器根据diamagneti ...
- 9.1---上楼梯(CC150)
注意:错误主要在溢出问题上.所以不设置int,而是long. public static int countWays(int n){ if(n == 1) return 1; if(n == 2) r ...