1046-鹏,几个通过的程序答案却不同,这题是不是有问题?

题目是;
HtBest的小鲲长大变成了大鹏,大鹏在天际翱翔,看到了一片绵延的山脉,每座山都有自己的高度,大鹏想穿过这片山脉。由于他只能紧贴地面飞行,
他想知道他一共要翻越几次大山(上升->平飞->下降,算一次,其中平飞可以没有),初始时,大鹏在山脉的左端。

链接:https://ac.nowcoder.com/acm/contest/19305/1046 来源:牛客网

输入描述:

第一行一个正整数n,表示山脉被分为n段。
第二行有n个正整数ai两两之间用空格分开,ai表示山脉第i段的高度。

输出描述:

一行,包含一个正整数,表示大鹏需要翻越几次大山。

备注:

对于100%的测试数据:
1 ≤ n ≤ 1000000
1 ≤ a≤ 1000000000
数据量较大,注意使用更快的输入输出方式。



出现问题的测试数据:
50
1 1 5 9 6 5 3 2 4 1
2 5 6 3 7 2 5 2 5 2
8 9 6 2 3 5 2 1 1 0
2 4 5 6 6 3 1 5 7 8
3 6 6 6 8 2 8 2 8 2




这是我的代码:




#include<iostream> using namespace std; int main() { int n; while(cin>>n){ int a[10]={100000}; int down=0,up=0,num=0; int i=1,j=1,t=0; while(t++<n){ cin>>a[j]; if(j==8){ j=1; i=1; a[1]=a[8]; a[0]=a[7]; } if(a[i]>a[i-1]){ up=1; } else if(a[i]<a[i-1]){ if(up==1){ up=0; num++; } down=1; } j++; i++; } cout<<num<<endl; } }




这是答案(已通过)一:




#include<bits/stdc++.h>
using namespace std;
typedef long long int ll;
const int INF = 0x3f3f3f3f;
ll fp(ll a, ll n) {
    int base = a;
    int res = 1;
    while (n) {
        if (n & 1)res *= base;
        base *= base;
        n >>= 1;
    }
    return res;
}
bool judge(int x) {
    bool ans;
    if (x == 1) {
        ans=false;
    }
    else {
        for (int i = 2; i * i <= x; i++) {
            if (x % i == 0) {
                ans=false;
            }
        }
        ans=true;
    }
    return ans;
}
int main() {
    int n;
    while(cin>>n){
        ios::sync_with_stdio(false); cin.tie(0); cout.tie(0);
    int t;
    vector<int> vec;
    for (int i = 0; i < n; i++) {
        cin >> t;
        vec.push_back(t);
    }
    int ans = 0;
    for (int i = 1; i < n - 1; i++) {
        if (vec[i] > vec[i - 1] && vec[i] > vec[i + 1]) {
            ans++;
        }
    }
    cout << ans << endl;
    }
}




这是答案(已通过)二:




#include <bits/stdc++.h>
using namespace std;
long long n;
void solve()
{
    vector < long long > a(n,0),b(n+2,0);
    long long i,ans=0,tag=0;
    for (i=0;i<n;i++)
        cin>>a[i];
    if (n<3) cout<<0;
    else
    {
        if (a[1]>a[0]) b[0]=a[0]-1;
        else b[0]=a[0]+1;
        b[n+1]=a[n-1]-1;
        for (i=1;i<=n;i++)
            b[i]=a[i-1];
        for (i=1;i<=n;i++)
        {
            if (b[i]>=b[i-1]) tag=1;
            else
            {
                if (tag) {tag=0;ans++;}
            }
        }
        cout<<ans;
    }
    cout<<endl;
}
int main()
{
    while(cin>>n)
        solve();
}




#算法题目求助##学习路径#
全部评论
蹲一个大佬回复
点赞 回复 分享
发布于 2022-01-18 20:35

相关推荐

11-11 14:21
西京学院 C++
Java抽象练习生:教育背景放最前面,不要耍小聪明
点赞 评论 收藏
分享
offer多多的六边形战士很无语:看了你的博客,感觉挺不错的,可以把你的访问量和粉丝数在简历里提一下,闪光点(仅个人意见)
点赞 评论 收藏
分享
1 收藏 评论
分享
牛客网
牛客企业服务