算法 - pat天梯赛考试座位号,此题运行超时

查看:101
本文介绍了算法 - pat天梯赛考试座位号,此题运行超时的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

pat的一个题

提示运行超时了。这个题我能想到的存储方式就是二维数组。知识储备还是太少= =
网上能找到的都是C++用结构体做的,找不到java的

import java.util.Scanner;

public class L1_005 {

    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        int sum = in.nextInt();
        String[][] examnumber = new String[sum][3];
        for(int i = 0;i<sum;i++){
            for(int j = 0;j<3;j++){
                examnumber[i][j] = in.next();
            }
        }
        int textnumber = in.nextInt();
        String[] s = new String[textnumber];
        for(int i = 0;i<textnumber;i++){
            s[i] = in.next();
        }
        for(int i = 0;i<textnumber;i++){
            for(int a = 0;a<sum;a++){
                    if(s[i].equals(examnumber[a][1])){
                        System.out.println(examnumber[a][0]+" "+examnumber[a][2]);
                    }
            }
        }
    }

}

pat此题地址:
https://www.patest.cn/contest...
java做,有别的办法做吗?还有运行超时是输入的地方超时了,还是查找匹配地方运行超时了呢?

解决方案

用java的Scanner只读入数据就超时了(读入数据见下),真心给跪

import java.io.*;
import java.util.*;

public class Main {
  public static void main(String[] args) {
    Scanner in = new Scanner(System.in);
    int sum = in.nextInt();
    String str, test, exam;
    for (int i = 0; i < sum; i++) {
      str = in.next();
      test = in.next();
      exam = in.next();
    }
    int textnumber = in.nextInt();
    for (int i = 0; i < textnumber; ++i) {
      test = in.next();
    }
  }
}

在C++11出现之前他们到底是怎么写代码的……

#include <iostream>
#include <string>
#include <map>

std::map<std::string, std::pair<std::string, std::string> > map;

int main(int argc, char *argv[]) {
  int sum;
  std::string str, test, exam;

  std::cin >> sum;

  for (int i = 0; i < sum; i++) {
    std::cin >> str >> test >> exam;
    map.insert(std::make_pair(test, std::make_pair(str, exam)));
  }

  std::cin >> sum;

  for (int i = 0; i < sum; i++) {
    std::cin >> test;
    std::map<std::string, std::pair<std::string, std::string> >::iterator pair = map.find(test);
    std::cout << pair->second.first << " " << pair->second.second << std::endl;
  }

  return 0;
}

这篇关于算法 - pat天梯赛考试座位号,此题运行超时的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆