在资格赛中,提出了以下问题:
你已经收到了一张单词清单,供你学习和记忆。作为一名勤奋学习语言和艺术的学生,你决定根本不学习它们,而是在它们的基础上编一些毫无意义的游戏。您想出的一个游戏是看看如何将单词连接起来,从而生成按字母顺序排列的最低可能的字符串。
输入
作为玩这个游戏的输入,你会收到一个包含整数N的文本文件,这是你玩游戏所需要的字数。后面跟着N个字集,每个字集从一个整数M开始,集合中的单词数,后面跟着M个字。输入中的所有标记将被一些空格分隔,除了N和M之外,将完全由小写字母组成。
输出
您的提交应该包含每个对应的单词集的词汇表最短的字符串,每一行一个,并按顺序排列。
约束
1 <= N <= 100
1 <= M <= 9
1 <= all word lengths <= 10示例输入
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示例输出
cupfacebookforhackerstudentsstudious
duzklvrawqrc
dyroiymybeaxeyubxzdr
bwjibwjibwjijp
dcyihopjijliuiuy我写的程序如下:
chomp($numberElements=<STDIN>);
for(my $i=0; $i < $numberElements; $i++)
{
my $string;
chomp ($string = <STDIN>);
my @array=split(/\s+/,$string);
my $number=shift @array;
@sorted=sort @array;
$sortedStr=join("",@sorted);
push(@data,$sortedStr);
}
foreach (@data)
{
print "$_\n";
} 程序为给定的测试用例提供了正确的输出,但是facebook仍然显示它是不正确的。这个程序有什么问题吗?
发布于 2011-01-16 07:01:35
1
2 ba b程序输出bba,这是不正确的。bab在词汇上更早。
发布于 2013-06-27 18:06:35
这是一个红宝石程序。因为这是一次10分钟的快速黑客攻击,我没有比较性能。
biginput = [
['facebook', 'hacker', 'cup', 'for', 'studious', 'students'],
['k', 'duz', 'q', 'rc', 'lvraw'],
['mybea', 'zdr', 'yubx', 'xe', 'dyroiy'],
['jibw', 'ji', 'jp', 'bw', 'jibw'],
['uiuy', 'hopji', 'li', 'j', 'dcyi'],
['ba', 'b']
]
biginput.each do |input|
out = ""
input.each do |word|
word << word[0]
end
input.sort!
# puts temp.inspect
input.each do |res|
out << res[0..-2]
end
puts out
end发布于 2013-06-27 18:24:53
#!/usr/bin/env perl
while (<DATA>) {
chomp;
my($num_words, @words) = split /\s+/;
my @sorted_words = sort @words;
$" = '';
print @sorted_words, "\n";
}
__DATA__
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
2 ba bhttps://stackoverflow.com/questions/4704184
复制相似问题