Эта программа является решением проблемы Studious Student из Facebook Hacker Cup. Проблема может быть найдена здесь: ссылка .
Эта проблема:
Студент
Вам дали список слов для изучения и запоминания. Будучи прилежным учеником языка и искусства, вы решили совсем не изучать их и вместо этого создавать бессмысленные игры на их основе. Одна игра, которую вы придумали, состоит в том, чтобы увидеть, как можно объединить слова, чтобы создать лексикографически наименьшую возможную строку.
вход
В качестве входных данных для игры в эту игру вы получите текстовый файл, содержащий целое число N — количество наборов слов, с которыми вам нужно играть в свою игру. За этим последуют N наборов слов, каждый из которых начинается с целого числа M, количества слов в наборе, за которым следует M слов. Все токены на входе будут разделены пробелами и, кроме N и M, будут состоять исключительно из строчных букв.
Выход
Ваша заявка должна содержать лексикографически короткие строки для каждого соответствующего набора слов, по одной в строке и по порядку.
Ограничения
1
2
3
|
1 <= N <= 100 1 <= M <= 9 1 <= all word lengths <= 10 |
Пример ввода
1
2
3
4
5
6
|
5 6 facebook hacker cup for studious students 5 k duz q rc lvraw 5 mybea zdr yubx xe dyroiy 5 jibw ji jp bw jibw 5 uiuy hopji li j dcyi |
Пример вывода
1
2
3
4
5
|
cupfacebookforhackerstudentsstudious duzklvrawqrc dyroiymybeaxeyubxzdr bwjibwjibwjijp dcyihopjijliuiuy |
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 .