• 数据库UVA1592


    数据库UVA1592

    这个题我感觉题目理解有点难度。他的主要意思就是假如有一列有几行相同,那么这相同的部分所在的行必定有其列也是相同的。

    比如第二列的第二,三行是相同的。那么在第二,三行中必定有一个除第二列外相同的列。

    分析:

    这个其实可以用一个四重循环来做的。可能直接想不通,但是你用四种循环的话就很容易了,但这个四重循环肯定会超时。

    可以用这种思路:枚举两列,然后用一个for循环一行一行的检查是不是有相同的。这样就是三重for循环。

    检查相同时可以合并两列,这样减少比较的次数。

    有一个陷阱:可能会有多对结果,只要输出一对就可以了。

    package com.ahyer.bag;
    
    import java.io.FileInputStream;
    import java.io.FileNotFoundException;
    import java.util.HashMap;
    import java.util.Map;
    import java.util.Scanner;
    
    public class Main {
        public static String[][] data = new String[10005][15];
        public static Map<String, Integer> hashmap = new HashMap<>();
        public static void main(String[] args) {
            Scanner scanner = new Scanner(System.in);
            while (scanner.hasNext()) {
                String s = scanner.nextLine();
                int rows = Integer.parseInt(s.split(" ")[0]);
                int columns = Integer.parseInt(s.split(" ")[1]);
                for (int i = 0; i < rows; i++) {
                    String str = scanner.nextLine();
                    String[] split = str.split(",");
                    data[i] = split;
                }
                boolean pnf = false;
                for (int i = 0; i < columns; i++) {
                    for (int j = i + 1; j < columns; j++) {
                        hashmap.clear();
                        for (int k = 0; k < rows; k++) {
                            //合并两列
                            String text = data[k][i] + "," + data[k][j];
                            if (!pnf && hashmap.containsKey(text)) {
                                pnf = true;
                                System.out.println("NO");
                               System.out.format("%d %d
    ", hashmap.get(text) + 1, k + 1);
                                System.out.format("%d %d
    ", i + 1, j + 1);
                            } else {
                                hashmap.put(text, k);
                            }
                        }
                    }
                }
                if (!pnf) System.out.println("YES");
            }
        }
    }
    
    
  • 相关阅读:
    git 同步远程分支
    git tag 打标签
    EJS 语法
    从零开始制作 Hexo 主题
    博客灵感
    java编译做了哪些事?
    java+内存分配及变量存储位置的区别[转]
    用android模拟器Genymotion定位元素
    利用securecrt在linux与windows之间传输文件
    eclipse引入tomcat
  • 原文地址:https://www.cnblogs.com/HyPhoenix/p/14406258.html
Copyright © 2020-2023  润新知