原题在这 http://acm.hdu.edu.cn/showproblem.php?pid=1003
小弟不才,一直提交都是 WA,求解import java.util.Scanner;/**
 * @author Jian
 * @date 2012-8-7
 * @version
 * 
 */
public class Main
{
    public static void main(String[] args)
    {
        Scanner sc = new Scanner(System.in);
        if (sc.hasNextInt())
        {
            int cases = sc.nextInt();
            for (int c = 0; c < cases; c++)
            {
                if (sc.hasNextInt())
                {
                    int counts = sc.nextInt();
                    int sum = 0;
                    int[] arrays = new int[counts];
                    for (int i = 0; i < counts; i++)
                    {
                        arrays[i] = sc.nextInt();
                        sum += arrays[i];
                    }
                    int start = 0;
                    int end = counts - 1;
                    int max = Integer.MIN_VALUE;
                    int[] output = new int[3];
                    int decrease = 0;                    for (int j = 0; j < counts; j++)
                    {
                        sum -= decrease;
                        if (sum > max)
                        {
                            max = sum;
                            output[0] = start;
                            output[1] = end;
                            output[2] = max;
                        }
                        if (start == end)
                            break;
                        if (arrays[start] >= arrays[end])
                        {
                            decrease = arrays[end];
                            end = end - 1;
                        }
                        else
                        {
                            decrease = arrays[start];
                            start = start + 1;
                        }
                    }                    if (c > 0)
                        System.out.println();
                    System.out.println("Case " + (c + 1) + ":");
                    System.out.println(output[2] + " " + (output[0] + 1) + " "
                            + (output[1] + 1));                }
            }        }
    }
}

解决方案 »

  1.   

    也试过把输出放到后面,但还是不行。
    /** 
     *It is a demo for practicing JAVA. All codes are opened source by Jian. 
     */
    package p1003;import java.util.Scanner;/**
     * @author Jian
     * @date 2012-8-7
     * @version
     * 
     */
    public class P1003_3
    {
        public static void main(String[] args)
        {
            Scanner sc = new Scanner(System.in);
            int[][] output;
            if (sc.hasNextInt())
            {
                int cases = sc.nextInt();
                output = new int[cases][3];
                for (int c = 0; c < cases; c++)
                {
                    if (sc.hasNextInt())
                    {
                        int counts = sc.nextInt();
                        int sum = 0;
                        int[] arrays = new int[counts];
                        for (int i = 0; i < counts; i++)
                        {
                            arrays[i] = sc.nextInt();
                            sum += arrays[i];
                        }
                        int start = 0;
                        int end = counts - 1;
                        int max = Integer.MIN_VALUE;
                        output[c] = new int[3];
                        int decrease = 0;                    for (int j = 0; j < counts; j++)
                        {
                            sum -= decrease;
                            if (sum > max)
                            {
                                max = sum;
                                output[c][0] = start;
                                output[c][1] = end;
                                output[c][2] = max;
                            }
                            if (start == end)
                                break;
                            if (arrays[start] >= arrays[end])
                            {
                                decrease = arrays[end];
                                end = end - 1;
                            }
                            else
                            {
                                decrease = arrays[start];
                                start = start + 1;
                            }
                        }
                    }
                }
                for (int m = 0; m < cases; m++)
                {
                    System.out.println("Case " + (m + 1) + ":");
                    System.out.println(output[m][2] + " " + (output[m][0] + 1)
                            + " " + (output[m][1] + 1));                if (m < cases - 1)
                        System.out.println();
                }        }
        }
    }