UVA1592 数据库 Database

简介: UVA1592 数据库 Database

给出一个n行m列的数据库,是否存在两个不同行r1,r2和两个不同列c1,c2,使得这两行和这两列相同(即(r1,c1)和(r2,c1)相同,(r1,c2)和(r2,c2)相同)。

输入样例

3 3
How to compete in ACM ICPC,Peter,peter@neerc.ifmo.ru
How to win ACM ICPC,Michael,michael@neerc.ifmo.ru
Notes from ACM ICPC champion,Michael,michael@neerc.ifmo.ru
2 3
1,Peter,peter@neerc.ifmo.ru
2,Michael,michael@neerc.ifmo.ru

输出样例

NO
2 3
2 3
YES


实现代码


#include<bits/stdc++.h>
using namespace std;
vector<string> strCont;//用于存储字符串,为其编号
map<string, int> strAndID;//字符串和编号一一对应
int n, m;
//读取字符串,进行初始化
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;
      if (!strAndID.count(s)) {
        strCont.push_back(s);
        strAndID[s] = strCont.size() - 1;
      }
      base[c].push_back(strAndID[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)) {//判断之前是否已经出现过这样的二元组 p
          mark[p] = r;//没出现过就存着,然后标号
        }
        else {
          cout << "NO" << endl;
          cout << mark[p] + 1 << " " << r + 1 << endl;//输出行号
          cout << i << " " << j << endl;//输出列号
          return;//找到就结束
        }
      }
    }
  }
  cout << "YES" << endl;//没找到就输出YES.
}
int main()
{
  while (cin >> n >> m && n) {
    vector<int> base[12];//用于存数据库  10cols
    strAndID.clear();//初始化
    strCont.clear();
    read(base, n, m);
    check(base, n, m);
  }
  return 0;
}
相关文章
|
4月前
|
SQL NoSQL 关系型数据库
二、什么是数据库(DataBase)
二、什么是数据库(DataBase)
70 0
|
10天前
|
SQL 调度 数据库
【Database】Sqlserver如何定时备份数据库和定时清除
【Database】Sqlserver如何定时备份数据库和定时清除
19 2
|
3月前
|
存储 关系型数据库 数据库
在进行RDS(Amazon Relational Database Service,亚马逊关系数据库服务)迁移时,兼容性审查
在进行RDS(Amazon Relational Database Service,亚马逊关系数据库服务)迁移时,兼容性审查
23 1
|
3月前
|
SQL 存储 关系型数据库
MySQL技能完整学习列表——1、数据库基础概念——1、关系型数据库(Relational Database)
MySQL技能完整学习列表——1、数据库基础概念——1、关系型数据库(Relational Database)
186 0
|
4月前
|
数据可视化 关系型数据库 Java
数据库导出神器:Database-Export
Database-Export是一款开源的数据库导出工具
186 0
数据库导出神器:Database-Export
|
5月前
|
存储 机器学习/深度学习 关系型数据库
向量数据库(vector database)概念初认知
向量可以进行比较,如果将那些不可以比较的数据转换成为向量,且这些向量的分布和距离可以反映出实体的关系,那么就可以通过比较向量的关键进行检索,也就可以实现图搜图、文搜文的功能了。
|
5月前
|
XML Java 数据库
SpringBoot【问题 03】BindingException\MalformedInputException\Error querying database(sqlite数据库)
SpringBoot【问题 03】BindingException\MalformedInputException\Error querying database(sqlite数据库)
63 0
|
7月前
|
存储 数据库连接 数据库
在 SAP HANA 数据库编写 Database Procedure 的两种方式
在 SAP HANA 数据库编写 Database Procedure 的两种方式
38 0
|
11月前
|
SQL 存储 安全
在 Go 中如何使用 database/sql 来操作数据库
在 Go 中如何使用 database/sql 来操作数据库
187 0
|
11月前
|
存储 Oracle 关系型数据库

热门文章

最新文章