zoukankan      html  css  js  c++  java
  • 九度OJ 1261:寻找峰值点 (基础题)

    时间限制:1 秒

    内存限制:32 兆

    特殊判题:

    提交:500

    解决:37

    题目描述:

    给定一个整数序列,该整数序列存在着这几种可能:先递增后递减、先递减后递增、全递减、全递增。
    请找出那个最大值的点。

    输入:

    输入的第一行包括一个整数N(1<=N<=10000)。
    接下来的一行是N个满足题目描述条件的整数。

    输出:

    可能有多组测试数据,对于每组数据,
    输出这N个数中最大的那个数。

    样例输入:
    5
    1 2 3 2 1
    样例输出:
    3

    思路:

    遍历求最大值不就行吗?

    结果WA。我认为判题有问题。

    附上能AC的代码和我的代码。


    代码1(能AC的代码):

    #include<stdio.h>
     
    int num[11000];
     
    int max(int x, int y)
    {
        return x>y ? x : y;
    }
     
    int TriSearch(int *num, int n, int left, int right)
    {
        int mid=0, midmid;
        while(left < right)
        {
            if(left+1 == right) return max(num[left],num[right]);
            mid = (left+right)/2;
            if(mid+1 == right)
                midmid = (mid+right)/2+1;
            else
                midmid = (mid+right)/2;
            if(midmid == right)
                return max(num[left], max(num[mid], num[right]));
            if(num[mid] >= num[midmid]) right = midmid;
            else left = mid;
        }
        return num[mid];
    }
     
    int main()
    {
        int n;
        while(scanf("%d", &n) != EOF)
        {
            for(int i=0; i<n; i++)
                scanf("%d", &num[i]);
            int ans = TriSearch(num, n, 0, n-1);
            printf("%d
    ", ans);
        }
    }
    /**************************************************************
        Problem: 1261
        User: liangrx06
        Language: C
        Result: Accepted
        Time:560 ms
        Memory:956 kb
    ****************************************************************/



    代码2(我的代码):

    #include <stdio.h>
     
    #define N 10000
     
    int main(void)
    {
        int n, i, max;
        int a[N];
     
        while (scanf("%d", &n) != EOF)
        {;
            for(i=0; i<n; i++)
            {
                scanf("%d", &a[i]);
                if (i == 0)
                    max = a[0];
                else if (a[i] > max)
                    max = a[i];
            }
            printf("%d
    ", max);
        }
     
        return 0;
    }
    /**************************************************************
        Problem: 1261
        User: liangrx06
        Language: C
        Result: Wrong Answer
    ****************************************************************/


    编程算法爱好者。
  • 相关阅读:
    bootstrap学习笔记一: bootstrap初认识,hello bootstrap(下)
    bootstrap学习笔记一: bootstrap初认识,hello bootstrap(上)
    AutoCompleteTextView的使用
    常用的android弹出对话框
    PopupWindow的使用
    linux udev、mdev 介绍
    linux 守护进程编程
    linux 下的文件目录操作之遍历目录
    linux 下查找图片文件方法
    linux 内核 zImage 生成过程分析
  • 原文地址:https://www.cnblogs.com/liangrx06/p/5083807.html
Copyright © 2011-2022 走看看