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系统
记得在自己学习数据库知识的时候特别喜欢看案例,因为优化的手段是容易掌握的,但是整体的优化思想是很难学会的.这也是为什么自己特别喜欢看案例,今天也开始分享自己做的优化案例. 最近一直很忙,博客产出也少的 ...
随机推荐
- C#第一次的Hello World
这个Hello World是最基础的,在程序默认生成的using System下,不用自己可以的去写using System. 我们要牢记compling and running和running wi ...
- window.location.href 和 window.location.replace 的区别
window.location.href 和 window.location.replace 的区别 1.window.location.href=“url”:改变url地址: 2.window. ...
- 关于CSS中对IE条件注释的问题
一.通用区分方式:IE6.IE7能识别*,标准浏览器(如FF)不能识别*:IE6能识别*,但不能识别 !important:IE7能识别*,也能识别 !important:IE8能识别\0,不能识别* ...
- polymorphic-associations 多态关联实例 ruby on rails
这次做新项目的时候,把图片都放在了一个表里,其他表中不再存图片信息,通过多态关联建立表之间的关系. (1)新建picture表, component表不需要处理 class CreatePicture ...
- js 判断鼠标进去方向
function fx(id){ var obj= document.getElementById(id); var fun=function(e){ var w=obj.offsetWidth; v ...
- 快速排序(Quicksort)
快速排序:是对冒泡排序的一种改进. 什么是冒泡排序:简单一点就是冒气泡.极值数据会到达数据的顶端. 实现步骤:建立一个数据排列标准,从大到小还是从小到大. [从大到小排列]:从第一个数据开始遍历,比较 ...
- Android权限 uses-permission
Manifest.permission 官方API说明: http://developer.android.com/reference/android/Manifest.permission.html ...
- CCF第四题无向图打印路径
#include<iostream> #include<vector> #include<algorithm> #include<stack> #def ...
- Ubuntu固定ip和dns配置和查看
1.查看dns: cat /etc/resolv.conf 2.Ubuntu固定ip sudo vim /etc/network/interfaces 修改如下部分: auto p3p1 iface ...
- WebApp的前端所遇问题
2015年10月1日至10月25日,两个本科生和一位研究生以及一位老师组成四人团队,开发某教育前端项目 所遇问题总结以及分享: 一.主要应用软件:sublime_text HBuilder 初学者可以 ...