欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

判断条件要仔细推敲(记洛谷P1317题WA的经历)

程序员文章站 2024-03-17 21:00:22
...

题目要求

P1317题目链接
判断条件要仔细推敲(记洛谷P1317题WA的经历)

分析

我想的比较复杂,
就是外面有一个大循环,保证遍历数组。
然后是直到下坡我们才能进内层循环,否则往后挪一个(i++)。
进内循环以后必须是上坡才能counter++,并把i赋值为j;如果内层达到sum,就直接退出大循环就行,防卡死……

第一次提交——WA

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int sum = scanner.nextInt();
        int[] array = new int[sum];
        for (int i = 0; i < sum; i++) {
            array[i] = scanner.nextInt();
        }
        int counter = 0;
        outer:
        for (int i = 0; i < sum-1; ) {
            if (array[i+1] < array[i]) {
                for (int j = i+1; j < sum; j++) {
                    if (j == sum-1) {
                        break outer;
                    } else if (array[j] > array[j+1]) {
                        i = j;
                        counter++;
                        break;
                    }
                }
            } else {
                i++;
            }
        }
        System.out.println(counter);
        scanner.close();
    }
}

判断条件要仔细推敲(记洛谷P1317题WA的经历)
开Debug,大致一看没啥大事……

换一组测试数据:

5 
5 4 3 2 1

判断条件要仔细推敲(记洛谷P1317题WA的经历)

打印出3,这可不对,开Debug~~

发现一路下坡会直接counter++,这不对啊,进一步发现,下坡会直接满足条件,gg……

原来是条件反了诶,调过来就行!

第二次提交——AC

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int sum = scanner.nextInt();
        int[] array = new int[sum];
        for (int i = 0; i < sum; i++) {
            array[i] = scanner.nextInt();
        }
        int counter = 0;
        outer:
        for (int i = 0; i < sum-1; ) {
            if (array[i+1] < array[i]) {
                for (int j = i+1; j < sum; j++) {
                    if (j == sum-1) {
                        break outer;
                    } else if (array[j] < array[j+1]) {
                        i = j;
                        counter++;
                        break;
                    }
                }
            } else {
                i++;
            }
        }
        System.out.println(counter);
        scanner.close();
    }
}

判断条件要仔细推敲(记洛谷P1317题WA的经历)

后记

Code写的比较臃肿,时间所限,见谅……

条件要找准,别弄反了诶!

相关标签: # 菜鸡逛洛谷