相同的测试用例显示不同的答案
Posted
技术标签:
【中文标题】相同的测试用例显示不同的答案【英文标题】:Same test cases showing different answer 【发布时间】:2021-11-14 20:09:45 【问题描述】:我对@987654321@有疑问:
我的代码:
void miniMaxSum(vector<int> arr)
sort(arr.begin(), arr.end());
int sum=0;
for(int i=0; i<5; i++)
sum += arr[i];
cout<<sum-arr[4]<<" "<<sum-arr[0]<<endl;
换句话说:
void miniMaxSum(vector<int> arr)
sort(arr.begin(), arr.end());
int min=0;
for(int i=0; i<4; i++)
min += arr[i];
cout<<min<<" ";
int max=0;
for(int i=1; i<5; i++)
max += arr[i];
cout<<max<<endl;
这些代码对于示例数据 1 和 2 运行成功,但是当我提交代码时,这些测试用例也显示为错误输出。
你能提示一下这段代码哪里错了吗?
【问题讨论】:
【参考方案1】:根据给定的问题将int
更改为long long
。
【讨论】:
【参考方案2】:int
是一个 32 位整数,问题提到答案可能大于此。您需要为向量和最大变量使用 64 位整数 (int64_t
)。
您还应该切换到按引用而不是按值传递
void miniMaxSum(vector<int> arr)
将复制整个数组,void miniMaxSum(const vector<int>& arr)
将传入对数组的只读引用而不复制它。
【讨论】:
函数通过排序来改变向量。只是让参数列表让你复制是最简单的,而 const ref 根本不起作用......以上是关于相同的测试用例显示不同的答案的主要内容,如果未能解决你的问题,请参考以下文章