combination of integer numbers

2 次查看(过去 30 天)
I need to make distibution of 15 apples among 4 person [a b c d],
each person can have a value betwwen 0-15. and summation always (a+b+c+d=15)
so how can i generate the matrix for all possible combinantion
so i eapect matrix as
a = [1 14 0 0
0 0 0 15
3 6 2 4
...................
...................]
  2 个评论
Walter Roberson
Walter Roberson 2019-11-16
One approach is to ndgrid() all possible combinations, and then check those to find the ones that add up to the right number.
Nasser Hakami
Nasser Hakami 2019-11-18
thanks. however i couldn't manage to do it

请先登录,再进行评论。

采纳的回答

the cyclist
the cyclist 2019-11-16
I would download John D'Errico's partitions function, and then I believe your answer is
p = partitions(15,[1 1 1 1])
  5 个评论
the cyclist
the cyclist 2019-11-18
I don't think an easier example was needed, but I can verify that
partitions(4,[1 1 1])
gives the same answer (not necessarily in the same row order).
I'm not sure why you couldn't run the code. Did you do the following?
  • go to the link I uploaded
  • click on the download button to get the files
  • unzip the files
  • put the partitions.m file in your path so that you can run it
Nasser Hakami
Nasser Hakami 2019-11-19
thanks a lot
it is working perfect
the problem that i just copied the code from webpage and i didnt download file

请先登录,再进行评论。

更多回答(1 个)

Walter Roberson
Walter Roberson 2019-11-18
[Ag, Bg, Cg, Dg] = ndgrid(0:15);
Eg = [Ag(:), Bg(:), Cg(:), Dg(:)];
mask = sum(Eg,2) == 15;
selected = Eg(mask,:);
a = selected(:,1);
b = selected(:,2);
c = selected(:,3);
d = selected(:,4);

类别

Help CenterFile Exchange 中查找有关 Logical 的更多信息

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by