#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;
}

有没有人指导一下,一本通1107,该怎样?
- 写回答
- 好问题 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
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 1无用