我必须以相同的方式从5个数组中找到4个数字的最大和,以及一个最小和。由于某些原因,maxsum变为负数,因此我的代码在某些较大的测试用例中失败了
#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
int minimini(int list[]){
int minisum=0;
int taker;
int a=max({list[0],list[1],list[2],list[3],list[4]});
for (int i=0; i<5; i++){
taker=list[i];
if(taker!=a){
minisum=minisum+taker;
}
}
return minisum;
}
int maxa(int list[]){
int maxsum=0;
int taker;
int a=min({list[0],list[1],list[2],list[3],list[4]});
for (int i=0; i<5; i++){
taker=list[i];
if(taker!=a){
maxsum=maxsum+taker;
cout<<"maxsum >>"<<maxsum;
cout<<"a="<<a;
}
}
return maxsum;
}
int main(){
int list[5];
int minisum, maxsum;
for (int i=0; i<5; i++){
cin>>list[i];
}
minisum=minimini(list);
maxsum=maxa(list);
cout<<minisum<<" "<<maxsum;
return 0;
}
整数数据类型只能保存-2,147,483,647到2,147,483,647 [1]之间的值。解决此问题的一种简单方法是将所有int
声明更改为float
或double
或long
数据类型。