m0_73293548 2022-08-15 21:13 采纳率: 75%
浏览 47
已结题

输入每头奶牛的身高,请问正中间的那头奶牛向前向后看,以为队伍的长度是多少?

第11题 看的最远
有N(奇数)只奶牛排成一行,为了安全2头最高大的奶牛排在队伍前端(最左边)和后端(最右边)。这些奶牛不习惯抬头,向前或向后看时,看到有和它同样高或比它高的奶牛就会被挡住视线,它会认为那就是最远的牛。
输入每头奶牛的身高,请问正中间的那头奶牛向前向后看,以为队伍的长度是多少?

输入格式
第一行1个奇整数:N,范围在[3,1000]。
第2行有N个不同的正整数,范围在[1,1000]。

输出格式
一个整数,队伍长度。

输入/输出例子1
输入:

9
20 5 10 4 10 6 1 8 20

输出:

7
解释:中间第5个高度为10的奶牛,最远只看到前面的高度为10的第3只奶牛和后面的高度为20的奶牛,以为队伍是 10 4 10 6 1 8 20

作答区域
#include<bits/stdc++.h>
using namespace std;
int n,a[105],maxx;
int main(){
cin>>n;
for(int i=1;i<=n;i++)
cin>>a[i];
for(int i=1;i<=n;i++)
if(a[i]>a[maxx]) maxx=i;
int ans=1;
for(int i=maxx;i<n;i++)
if(a[i]>a[i+1]) ans++;
else break;
cout<<ans;

return 0;

}

  • 写回答

2条回答 默认 最新

  • it_hao528 2022-08-15 22:04
    关注

    思路:从中间开始向左一个一个比较遇到大于等于的停止,向右一个一个比较遇到大于等于的停止。
    具体参考代码如下:

    int main(){
        int n, a[105], mid;
        cin >> n;
        mid = n / 2;
        for(int i = 0; i < n; i++)
            cin >> a[i];
        int ans = 1;
        // 向左
        for(int i = mid - 1; i >= 0; i--) {
            ans++;
            if(a[i] >= a[mid])
                break;
        }
        // 向右
        for(int i = mid + 1; i < n; i++) {
            ans++;
            if(a[i] >= a[mid])
                break;
        }
        cout << ans << endl;
        return 0;
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 8月23日
  • 已采纳回答 8月15日
  • 创建了问题 8月15日

悬赏问题

  • ¥15 虚幻5 UE美术毛发渲染
  • ¥15 CVRP 图论 物流运输优化
  • ¥15 Tableau online 嵌入ppt失败
  • ¥100 支付宝网页转账系统不识别账号
  • ¥15 基于单片机的靶位控制系统
  • ¥15 真我手机蓝牙传输进度消息被关闭了,怎么打开?(关键词-消息通知)
  • ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?
  • ¥20 IOS游览器某宝手机网页版自动立即购买JavaScript脚本
  • ¥15 手机接入宽带网线,如何释放宽带全部速度
  • ¥30 关于#r语言#的问题:如何对R语言中mfgarch包中构建的garch-midas模型进行样本内长期波动率预测和样本外长期波动率预测