社区讨论

站外题求助,16pts

灌水区参与者 2已保存回复 5

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
5 条
当前快照
1 份
快照标识符
@lzo515t8
此快照首次捕获于
2024/08/10 20:54
2 年前
此快照最后确认于
2024/08/10 21:59
2 年前
查看原帖
CPP
题目描述
某人有n个球,第i个球有ai的质量,要将这n个球分成两堆(两堆球的数量可以不同)放在跷跷板两侧,问跷跷板两侧的球的质量的差的绝对值最小是多少?

输入格式
第一行一个数n。
第二行n个数a1···an。

输出格式
一行一个数,表示求的答案。

样例一
input
5
1 5 3 4 7
output
0
explanation
将1,5,4放在左侧,将3,7放在右侧,两者差为0。

样例二
input
4
100 9 8 1
output
82
数据范围
对于100%的数据中,
n≤25,
0≤ai≤1000000000,
n≤25,0≤ai≤1000000000;

对于第i个测试点n=i,且分值为4。
时间限制:1s
空间限制:128MB
最好成果:贪心
CPP
#include<bits/stdc++.h>
using namespace std;
int main(){
	int n,a[40],f1=0,f2=0;
	cin>>n;
	for(int i=0;i<n;i++)
		cin>>a[i];
	for(int i=0;i<n;i++){
		if(f1<f2)
			f1+=a[i];
		else
			f2+=a[i];
	}
	cout<<abs(f1-f2);
}

回复

5 条回复,欢迎继续交流。

正在加载回复...