世界上最长的下坡怎么解

最长下坡
小明天天沿着未名湖环湖路跑,有时候也觉得蛮累。
累的时候跑下坡就很开心。小明想知道最长的一段下坡有多长。
环湖路是个圆形,周长n米。每隔一米测一下路面高度,两个测高点之间的高度是单调变化或不变的。
问最长的一段下坡有多少米长。小明只能顺时针跑。下坡必须高度单调减少。

时间限制:1000
内存限制:65536
输入
第一行是整数n,表示环湖路一共n米长(2<=n<=100)。 第二行是n个整数,每个整数范围[0,10000],按顺时针顺序给出了n个测高点的高度
输出
最长下坡路段的长度
样例输入
样例输入1:
5
2 1 5 6 3
样例输入2:
5
2 1 5 4 3
样例输入3:
4
1 1 1 1

样例输出
样例输出1:
3
样例输出2
4
样例输出3
0

提示
这是个简单枚举题,枚举起点即可

#include <iostream>

// Find the slop length from the start point s.
int find_slop_length_from(int a[], int n, int s)
{
    int length = 0;
    int i = s;
    do
    {
        int j = (i + 1) % n;
        if (a[i] > a[j])
        {
            length++;
            i = j;
        }
        else
        {
            break;
        }
    } while (i != s);
    return length;
}

int main()
{
    const int N = 101;
    int a[N], n;

    std::cin >> n;
    for (int i = 0; i < n; i++)
        std::cin >> a[i];

    int max_length = 0;
    for (int i = 0; i < n; i++)
    {
        int length = find_slop_length_from(a, n, i);
        if (length > max_length)
            max_length = length;
    }

    std::cout << max_length << '\n';
    return 0;
}

这小明真是闲的没事干,一米一量高度......高度你个经验之谈,正常成年人一步的跨度是1m

从第一个坡段开始,相邻破段判断是否减少,减少则是下坡。计算总长度。最后得到最长。要考虑绕圈问题

#include <iostream>
using namespace std;
int main()
{
   int n,i,max=0,m=0,s;
   int a[100];
   cin>>n;
   for(i=0;i<n;i++)
      cin>>a[i];

   s = a[0];
   for(i=1;i<n;i++)
   {
       if(a[i] < s)
           m++;
       else
       {
           if(m > max)
               max = m;
           m = 0;
       }
       s = a[i];
   }
   for(i=0;i<n;i++)
   {
       if(a[i] < s)
           m++;
       else
       {
             if(m > max)
               max = m;
             break;
       }
       s = a[i];
   }
   cout<<max;
    return 0;
}