天天看點

1113. Integer Set Partition (25)[數學邏輯題]

1. 原題:https://www.patest.cn/contests/pat-a-practise/1113

2. 思路:

題意:基本邏輯題。

給出一組整數,劃分成兩部分,使得個數之差最小且和的差最大。

思路:

顯然,直接順序排序,然後均分成兩組,統計和就行了。

已AC。

3. 源碼:

#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;

int main()
{
	//freopen("in.txt", "r", stdin);
	int N;
	cin >> N;
	vector<int> v(N);
	for (int i = 0; i < N; i++)
	{
		cin >> v[i];
	}
	sort(v.begin(), v.end());//升序排序
	
	int sum1, sum2;
	sum1 = sum2 = 0;
	for (int i = 0; i < N / 2; i++)
	{
		sum1 += v[i];
	}
	for (int i = N / 2; i < N; i++)
	{
		sum2 += v[i];
	}

	int difference = (N % 2 == 0 ? 0 : 1);//個數差不是0就是1.
	cout << difference << ' ' << sum2 - sum1 << endl;

	return 0;
}