算法 - pat天梯赛考试座位号,此题运行超时
本文介绍了算法 - 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屋!
查看全文