Diem que un vector V
té una partició si i només si
es pot dividir en dues parts tals que
la suma de cadascuna de les parts sigui igual a la suma de l’altra.
Per dividir entenem que podem separar el vector en dues parts, tal que
si tornem a unir-les, tornem a tenir el vector original
(com si el talléssim per una posició).
Feu la funció particio(V)
tal que,
donat un vector d’enters V
,
torni cert si i només si V
té una partició.
Per exemple, si tenim:
V = | 4 | 3 | 2 | 5 | 1 | 1 | 1 | 1 |
la funció tornarà TRUE
ja que hi ha una partició del vector V
:
[4, 3, 2] i [5, 1, 1, 1, 1] tal que la suma de cadascuna de les parts és 9.
En canvi, si tenim:
V = | 1 | 3 | 2 | 5 |
la funció tornarà FALSE
, ja que no hi ha cap partició tal que la suma de totes
dues parts sigui igual. Per exemple, si partim el vector en:
[1] i [3, 2, 5], [1, 3] i [2, 5] o [1, 3, 2] i [5],
la suma de cadascuna de les parts és diferent.
Observació
Només cal que enviïs el fitxer amb la funció (i les funcions auxiliars que hagis fet)
que et demanem i prou.
El fitxer main.R
et pot servir per a fer la teva solució, però no cal que n’enviïs
el contingut.
Entrada
Un vector V
d’enters.
Sortida
TRUE
si i només hi ha una partició del vector V
.
Input
4 1 3 2 5
Output
FALSE
Input
8 4 3 2 5 1 1 1 1
Output
TRUE