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
    ****************************************************************/


    编程算法爱好者。
  • 相关阅读:
    R语言 ggplot2包
    C++实现景区信息管理系统
    linux系统目录介绍
    Python中的赋值、深拷贝与浅拷贝(内存地址)
    三大相关系数: pearson, spearman, kendall(python示例实现)
    Xshell删除键不好使:删除显示退格^H
    Spark SQL中出现 CROSS JOIN 问题解决
    Python apply函数
    Python Dataframe 分组排序和 Modin
    Python 中的时间处理包datetime和arrow
  • 原文地址:https://www.cnblogs.com/liangrx06/p/5083807.html
Copyright © 2011-2022 走看看