Permutations of integers with sum restrictions
2 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
Christoph Heilmann
le 1 Mar 2018
Commenté : Christoph Heilmann
le 15 Mar 2018
Hi Matlab gurus,
I would like to find all possible permutations of [-1 0 1] for a varying with varying length with a restriction on the overall sum across on permutation.
npermutek([-1 0 1],n) already allows me to find all possible permutations with varying length n. Is there a way to add the additional sum restriction across all permutations (e.g., n = 3 but output should only include permutations with a sum of 2)?
Since the length goes up to n=40 I running npermutek([-1 0 1],n) would be unfeasible without additional restrictions.
Any help on this issues would be greatly appreciated.
Thanks, Christoph
0 commentaires
Réponse acceptée
Suraj Mankulangara
le 13 Mar 2018
Hi Christoph
There are a couple of ways that you can do this:
1. Edit the source code of the "npermutek" function. Where the permutation row is calculated, find the sum of that row. Only add those rows to the matrix that meet the sum restriction
2. Alternatively, you can do:
permutedMatrix = npermutek([2 4 5], 2); % Returns permutations of length 2
permutedMatrix(sum(permutedMatrix, 2) <= maxSum, :) % Returns only those permutations whose sum is less than or equal to maxSum
The second method will allow you to continue using npermutek without making any modifications, if that is of interest to you.
Plus de réponses (0)
Voir également
Catégories
En savoir plus sur Multidimensional Arrays dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!