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

相关推荐

03-14 10:50
已编辑
门头沟学院 Java
鼠鼠华子无线实习,bg双九,通软岗位,论文,专利,竞赛都水过一点,秋招《非all&nbsp;in》选手,《泡池子泡到肿》选手,分享一下自己的时间线,给大家多一个参考。---实习末期,接口人电话沟通,最终决定求稳继续投递实习原部门---免机试,九月走完线下流程,开始入池---十月起开始保温,打听手中已拿offer,比较薪资,给出华子的预估职级和薪资(完全不给A的空间)---十月第二次保温,询问签约情况,各种暗示劝说留空白三方---十月底签约另一家公司,遂被降低优先级---十一月若干次常规保温信息(还有机会/稍晚一点/等这周。。。)---十二月告知部门有13的指标,愿意接受可以立刻发offer(难绷,妄图性...
蓦然回首一枝花:能体会楼主的心情,我投了华为无线的成研所,双9bg,被华子最后开了个13级的侮辱价 12.3打oc电话的时候接口人表示乐观等待就行,然后中间4周就开始不回消息或者拖四五天才回,翻来覆去就是“等审批结果”。 12月27号,我看应该是泡不出来了所以联系了部门流转,这时候接口人开始主动给我打电话告诉我马上就能出结果了,于是我也没继续流转。 12.31给我打电话说得降薪审批,薪资大概就是对应着13级的样子,但我当时因为投的是成都的,没有意识到薪资是按照上海开的,还以为这个薪资在成都是14级,加上那个时候我也“孝”劲上来了,想着能收我就行,于是答应了。 1.13开了出来,联系我了薪资,确认了下发现是13级,当时实在是接受不了,于是最终还是拒了。 拒的时候接口人告诉我说这个hc真的是他们争取了很久才争取到的,不过我一想到我12.3就打了oc电话,中间4周一直不搭理我或吊着我,最后12.31才告诉我争取不下来14级要降薪,也许争取真的要争取那么久吧,呵。 这个过程中也为华为拒了不少offer,大厂的、央企的、银行的都拒过,网上总说“华为没有发小奖状之前hr的话一个字都不要信”,当时没有放在心上,以为不会摊到我头上,现在来看当时也挺年轻气盛的。我感觉要不是中途我一直在烦hr,可能我就和楼主一样被泡死了吧,不过最后给开了个13级也和泡死没差,不过是被多侮辱了一次。 最后借楼主这个贴就只想跟后面的人提一个建议吧,还是那句说烂了的,“华为没有发小奖状之前hr的话一个字都不要信”,真的不要以为这样的情况不会出现在自己身上,不要拿自己的一辈子前途去送华为hr业绩。
点赞 评论 收藏
分享
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务