zoukankan      html  css  js  c++  java
  • UVa

    给一个n行m列的数据库表格,问有没有两个行 r1,r2 和 c1,c2,满足(r1,r2)的元素=(c1,c2)的元素。

    n≤10000,m≤10。

    直接枚举4个肯定会T的。可以只枚举c1 c2,然后枚举每一行,将c1 c2加入map里,下面再次枚举到就证明有。

    pair是个很好用的东西。

    #include <iostream>
    #include <cstdio>
    #include <string>
    #include <vector>
    #include <map>
    using namespace std;
    
    #define maxn 10000 + 100
    
    int main()
    {
        int n, m;
        while(scanf("%d%d", &n, &m) != EOF)
        {
            getchar();
            vector<string> a[maxn];
            string s;
            for (int i = 1; i <= n; i++)
            {
                getline(cin, s);
                int len = s.size();
                string k = "";
    
                for (int j = 0; j < len; j++)
                if (s[j] == ',')
                {
                    a[i].push_back(k);
                    k = "";
                }
                else k += s[j];
    
                a[i].push_back(k);
            }
    
            int canfind = 0;
            int r1, r2, c1, c2;
    
            for (int k = 0; k < m; k++)
            for (int j = k+1; j < m; j++)
            {
                map<pair<string, string>, int> ss;
                for (int i = 1; i <= n; i++)
                {
                    pair<string, string> t(a[i][k], a[i][j]);//pair的构造函数
                    if (ss.count(t))
                    {
                        canfind = 1;
                        r1 = ss[t], r2 = i;
                        c1 = k+1, c2 = j+1;
                        break;
                    }
                    else ss[t] = i;
                }
                if (canfind) break;
            }
    
            if (canfind)
            {
                printf("NO
    ");
                printf("%d %d
    ", r1, r2);
                printf("%d %d
    ", c1, c2);
            }
            else
            {
                printf("YES
    ");
            }
        }
    }
    
  • 相关阅读:
    获取具体地址的经纬度
    git更换 拉取推送地址
    array_merge 优化调整
    重启电脑后,redis 6380端口关闭重启
    清空git默认的用户名和密码,
    对一个给定的二维数组按照指定的键值进行排序
    Vim编辑器-批量注释与反注释
    Linux信号处理
    Linux 进程间通信
    mkdir
  • 原文地址:https://www.cnblogs.com/ruthank/p/9022392.html
Copyright © 2011-2022 走看看