#include<iostream> #include<algorithm> using namespace std; int a[105],b[105],sum[105],a1[105],b1[105]; int ans=0; int cal(){ int count0=0; for(int i=1;i<101;i++){ a1[i]=a[i],b1[i]=b[i]; } for(int i=1;i<101;){ for(int j=100;j>0;){ if(a1[i]!=0&&b1[i]!=0){ sum[count0]=i+j; count0++; a1[i]--,b1[j]--; } if(a1[i]==0)i++; if(b1[j]==0)j--; } } int ans=sum[0]; for(int i=0;i<count0;i++){ if(sum[i]>ans)ans=sum[i]; } return ans; } int main(){ int n; cin>>n; for(int i=0;i<n;i++){ int a2,b2; cin>>a2>>b2; a[a2]++,b[b2]++; cout<<cal()<<endl; } return 0; }找出以上代码中存在的错误并解决
时间: 2024-04-05 08:29:41 浏览: 34
C++复习卷1.docx
以上代码存在以下错误:
1. 函数cal()中的ans变量与全局变量ans重名,导致函数中修改的是局部变量,而非全局变量。
2. 函数cal()中的循环条件i和j没有考虑到当a[i]或b[j]为0时需要跳过,导致数组访问越界。
3. 函数cal()中最后的返回值应该是全局变量ans,而非函数中的局部变量ans。
修改后的代码如下:
阅读全文