一个很清晰的题解
2026-08-22 11:06:00
发布于:上海
8阅读
0回复
0点赞
这道题其实很简单,不需要多么复杂,只需要把A拿的钱减去B拿的钱就可以了。只需要把a数组进行降序排列,然后让A拿一份,B拿一份······以此类推就可以了,等到拿完,再相减就是答案了。
#include <bits/stdc++.h>
using namespace std;
int main()
{
int n,a[100000],A = 0,B = 0;//A代表A的钱数,B代表B的钱数
cin >> n;
for (int i = 1;i <= n;i++)
{
cin >> a[i];
}
sort(a + 1,a + n + 1,greater<int>());//使用greater进行降序排列
for (int i = 1;i <= n;i++)
{
if (i % 2 == 1)//判断是A该拿还是B该拿,我这里用的数组是以1为起始下标的,大家也可以用0作为起始下标,只不过下面的判断中的A拿和B拿要反一下
{
A += a[i];
}
else
{
B += a[i];
}
}
if (A > B)//判断该如何相减
{
cout << A - B;
}
else
{
cout << B - A;
}
}
这里空空如也

有帮助,赞一个