Эта программа является решением проблемы Studious Student из Facebook Hacker Cup. Проблема может быть найдена здесь: ссылка .
Эта проблема:
Студент
Вам дали список слов для изучения и запоминания. Будучи прилежным учеником языка и искусства, вы решили совсем не изучать их и вместо этого создавать бессмысленные игры на их основе. Одна игра, которую вы придумали, состоит в том, чтобы увидеть, как можно объединить слова, чтобы создать лексикографически наименьшую возможную строку.
вход
В качестве входных данных для игры в эту игру вы получите текстовый файл, содержащий целое число N — количество наборов слов, с которыми вам нужно играть в свою игру. За этим последуют N наборов слов, каждый из которых начинается с целого числа M, количества слов в наборе, за которым следует M слов. Все токены на входе будут разделены пробелами и, кроме N и M, будут состоять исключительно из строчных букв.
Выход
Ваша заявка должна содержать лексикографически короткие строки для каждого соответствующего набора слов, по одной в строке и по порядку.
Ограничения
|
1
2
3
|
1 <= N <= 1001 <= M <= 91 <= all word lengths <= 10 |
Пример ввода
|
1
2
3
4
5
6
|
56 facebook hacker cup for studious students5 k duz q rc lvraw5 mybea zdr yubx xe dyroiy5 jibw ji jp bw jibw5 uiuy hopji li j dcyi |
Пример вывода
|
1
2
3
4
5
|
cupfacebookforhackerstudentsstudiousduzklvrawqrcdyroiymybeaxeyubxzdrbwjibwjibwjijpdcyihopjijliuiuy |
|
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
|
import java.io.*;import java.util.Arrays;public class StudiousStudent { StudiousStudent(String inputFile) throws IOException, FileNotFoundException { FileInputStream fis = new FileInputStream(inputFile); DataInputStream in = new DataInputStream(fis); BufferedReader br = new BufferedReader(new InputStreamReader(in)); String line = null; String splitArray[] = null; //Reading the file line by line while((line = br.readLine()) != null) { //Splitting a line from spaces splitArray = line.split(" "); //Initial Sort Arrays.sort(splitArray); //Advanced Sort for (int i = 1; i<splitArray.length; i++) { for (int j = i+1; j<splitArray.length; j++) { if ((splitArray[j].startsWith(splitArray[i])) && (splitArray[i].length() < splitArray[j].length())) { String tmp = splitArray[i]; splitArray[i] = splitArray[j]; splitArray[j] = tmp; } } } for (int i = 1; i<splitArray.length; i++) System.out.print(splitArray[i]+""); System.out.println(); } br.close(); } public static void main(String args[]) throws FileNotFoundException, IOException { new StudiousStudent("StudiousStudent.txt"); }} |
Выход:
Ссылка: Facebook Hacker Cup: решение для студента на Java от нашего партнера по JCG Вишала Лада в блоге myCoding.net .
