注意

1.记录不同的数,有多少个记录相关的数据,就要多少次把第一个元素加进去,比如

#include<iostream>
using namespace std;
int a[1000005],diff[1000005],diffcnt;
int main()
{
    int n;cin>>n;
    for(int i=1;i<=n;++i) {cin>>a[i];}
    diffcnt=0;
    for(int i=2;i<=n;++i)
    {
        if(a[i]!=a[i-1]) {diff[++diffcnt]=i;}
    }
    ...
}

就明显错了,因为diff漏了第一个元素下标

应将diffcnt=0;改成diff[1]=1;diffcnt=1;

2.特判时,多个输入的题,如果输入一部分数据就知道答案,一定不要提前退出(否则会答案错误,甚至莫名其妙运行错误),等全部输入完后再continue;比如


#include<iostream>
using namespace std;
int a[100005];
int main()
{
    int n;cin>>n;
    if(n==1) {cout<<"0\n";continue;}
    cin>>a[1];
    int minpos=1,minnum=a[1];
    for(int i=2;i<=n;++i)
    {
        cin>>a[i];
        if(a[i]<minnum) {minpos=i;minnum=a[i];}
    }
  ...
}

明显就错了,因为n==1时提前continue;会导致这一次的a[1]没有被输入,留到下一次再输入就会WA或RE

将n==1;continue;的特判放到全部输入完之后就可以了

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务