Uncle Johny上存在练习问题www.codechef.com

作为冗长的文章,我提供了与此相关的链接。

https://www.codechef.com/problems/JOHNY/

我对此问题有两种解决方案(代码1和代码2)

代码1

class UncleJohny
{
    public static void main(String args[]) throws IOException
    {
        BufferedReader br = new BufferedReader(newInputStreamReader(System.in));
        PrintWriter pw = new PrintWriter(System.out);

        int test_case = Integer.parseInt(br.readLine());

        while(test_case-- > 0)
        {
            int n = Integer.parseInt(br.readLine());

            int i = 0;

            String a[] = br.readLine().split(" ");   //Mind this line

            int k = Integer.parseInt(br.readLine());

            String temp = a[k - 1];

            Arrays.sort(a);

            pw.println(Arrays.binarySearch(a, temp) + 1);
        }

        pw.flush();
    }
}


代码2

class UncleJohny
{
    public static void main(String args[]) throws IOException
    {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        PrintWriter pw = new PrintWriter(System.out);

        int test_case = Integer.parseInt(br.readLine());

        while(test_case-- > 0)
        {
            int n = Integer.parseInt(br.readLine());

            int a[] = new int[n];

            int i = 0;

            for(String str: br.readLine().split(" "))
            {
                a[i++] = Integer.parseInt(str);     //Mind this line
            }

            int k = Integer.parseInt(br.readLine());

            int temp = a[k - 1];

            Arrays.sort(a);

            pw.println(Arrays.binarySearch(a, temp) + 1);
        }

        pw.flush();
    }
}


上面代码中的基本任务是排序后在输入数组temp中找到a的值的索引

据我说,这两个代码的输出不会有任何区别。 (如果我做错了,请纠正我)

CodeChef正在接受Code 2,但对Code 1回答错误

我的查询到底是什么?

尽管相同,为什么code 2被接受而code 1不被接受?

为什么我需要将输入值存储在int数组中(如代码2所示),而不是将它们存储在String数组中(如代码1所示),以便使答案得到接受?

最佳答案

整数的排序顺序与字符串的排序顺序不同。例如。 “ 1”

09-30 22:04