Jak przypisać do tablicy poszczególne wyniki

0

Cześć, jak przypisać koralowce do tablicy

int podzial[1];

user image

Czyli:

podzial[0] = 0, 1, 5, 6
podzial[1] = 2, 3, 4, 7

Ważne jest do, żeby waga była równa albo minimalnie się od siebie różniła. Zarysowałem czerwonym kolorem, jakie powinno być podzielenie.

0
 #include <iostream>
#include <algorithm>
#include <numeric>

int main()
{
	int sourceArr[8]{2, 5, 4, 3, 8, 7, 6, 1};
	int arr1[4]{};
	int arr2[4]{};

	int i = 0;
	int j = 0;
	int k = 0;

	/*std::sort(sourceArr, sourceArr + 8);*/

	while (i < 4 && j < 4 && k < 8)
	{
		if (std::accumulate(arr1, arr1 + i, 0) < std::accumulate(arr2, arr2 + j, 0))
		{
			if (sourceArr[k] > sourceArr[k + 1])
			{
				arr1[i++] = sourceArr[k++];
				arr2[j++] = sourceArr[k++];
			}
			else
			{
				arr2[j++] = sourceArr[k++];
				arr1[i++] = sourceArr[k++];
			}
		}
		else
		{
			if (sourceArr[k] < sourceArr[k + 1])
			{
				arr1[i++] = sourceArr[k++];
				arr2[j++] = sourceArr[k++];
			}
			else
			{
				arr2[j++] = sourceArr[k++];
				arr1[i++] = sourceArr[k++];
			}
		}
	}

	std::cout << std::accumulate(arr1, arr1 + 4, 0) << std::endl;
	std::cout << std::accumulate(arr2, arr2 + 4, 0) << std::endl;
}

Coś takiego można wymodzić. Rozkład w tym przypadku nie jest idealny (przybliżony od równego podziału).
Równy podział uzyska się po uprzednim posortowaniu tablicy źródłowej.

1 użytkowników online, w tym zalogowanych: 0, gości: 1