wmf_2010 2021-08-09 16:43 采纳率: 100%
浏览 24
已结题

有没有人指导一下,一本通1107,该怎样?

#include<bits/stdc++.h>
using namespace std;
int main(){
    int l,m;
    cin>>l>>m;
    int a[105];
    for(int i=0;i<m*2;i++){
        cin>>a[i];
    }
    int p=0;
    int f=1,c=0    ;
    for(int i=2;i<m*2;i++){
        if(f==1){
            if(a[i]<a[i-1]&&a[i+1]>a[i-2]){
                c+=a[i-1]-a[i];
            }
            p=1;
        }
        else{
            c+=a[i]-a[i+1];
            p=0;
        }
        if(f==2){
            f=0;
        }
        f++;
        
    }
    if(p==0){
        c=c+(a[0]+a[1]);
    }
    cout<<l-c<<endl;
    cout<<c;
    return 0;
}

  • 写回答

1条回答 默认 最新

  • 快乐鹦鹉 2021-08-09 16:52
    关注
    你输入的数组最大下标为m*2-1,但你后面的循环中,出现了a[i+1],显然当i=m*2-1时,a[i+1]是越界的。所以后面的for循环应该i<m*2-1
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

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