我将以下代码提交给在线评委。 输入规范 Bill和Ted提供的数据具有以下格式:第一行包括派对数量p,后跟猜测数量g(1≤p≤50且1≤g≤10000)。然后按照p行,每行包含一个长度≤20的唯一参与方名称(仅包含字母a-z,A-Z和数字0-9)以及该小方在小数点后一位数的实现投票百分比。各方遵循g行后,每行都有一个猜测。猜测具有P1 + P2 + ... + Pk COMP n的形式,其中P1到Pk是参与方名称,COMP是比较运算符之一<,>,< =,> =或=并且n是包含0到100之间的整数。每个参与者名称在每次猜测中最多出现一次。
输出规范 对于每个猜测,总结各方的投票百分比,并将它们与指定的整数n进行比较。然后,打印一行说明猜测是否正确。有关详细信息,请参阅示例输出。
但无论我做什么,它总是让我超出时间限制......这是我的最终代码,
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String Ints = br.readLine();
String Guess;
String [] Ints_array = Ints.split("[ ]+");
int p = Integer.parseInt(Ints_array[0]);
int g = Integer.parseInt(Ints_array[1]);
HashMap<String, Float> Parties = new HashMap<String, Float>();
for(int i = 0 ; i < p ; i++) {
String temp = br.readLine();
String [] temp_array = temp.split("[ ]+");
Parties.put(temp_array[0],Float.parseFloat(temp_array[1]));
}
for(int j = 0 ; j < g ; j++) {
Guess = br.readLine();
float actual = 0;
String [] temp = Guess.split("[ ]+");
if(Guess.contains("+"))
{
for(int i = 0 ; i < temp.length-2 ; i++)
{
if(!temp[i].contains("+"))
actual+= Parties.get(temp[i]);
}
}
else
{
actual=Parties.get(temp[0]);
}
float guess = Float.parseFloat(temp[temp.length-1]);
if( temp[temp.length-2].contains(">"))
{
if(temp[temp.length-2].contains("="))
{
if(actual >= guess)
System.out.println("Guess #"+(j+1)+" was correct.");
else
System.out.println("Guess #"+(j+1)+" was incorrect.");
}
else
{
if(actual > guess)
System.out.println("Guess #"+(j+1)+" was correct.");
else
System.out.println("Guess #"+(j+1)+" was incorrect.");
}
}
else if( temp[temp.length-2].equals("<"))
{
if(temp[temp.length-2].contains("="))
{
if(actual <= guess)
System.out.println("Guess #"+(j+1)+" was correct.");
else
System.out.println("Guess #"+(j+1)+" was incorrect.");
}
else
{
if(actual < guess)
System.out.println("Guess #"+(j+1)+" was correct.");
else
System.out.println("Guess #"+(j+1)+" was incorrect.");
}
}
else if( temp[temp.length-2].equals("="))
{
if(actual == guess)
System.out.println("Guess #"+(j+1)+" was correct.");
else
System.out.println("Guess #"+(j+1)+" was incorrect.");
}
}
}
}
答案 0 :(得分:0)
我会写下答案的一部分,因为我认为要有一个好的搜索才能得到完整的答案。
希望这会有所帮助。