文章分类提示:问题
[问题类型]:程式咨询
[软件熟悉度]:入门
[问题叙述]:
想要写一个重复组合的程式,可以将所有可能的结果列出来
例如: 求x+y+z=25的正整数解
我能想到的就只有利用3个for及if即可把所有可能全部列出来
但我需要的是给定n个x,以及加总的数目,即以下状况:
x1+x2+...+xn=k,因此若用for的话会有n个for。
使用for及if的程式如下:
q=0
result=matrix({0},nrow=351,ncol=3)
for ( i in 0:25 )
{
for ( j in 0:25 )
{
for (k in 0:25 )
{
if( i+j+k==25 )
{
q=q+1
result[q,]=c(i,j,k)
}
}
}
}
另外一问,有方法将新列出的可能自动加进新列吗?
这样就不需给定nrow的值了XD
谢谢各位!
[关键字]:重复组合
M = expand.grid(0:25,0:25,0:25)M_sub = M[rowSums(M) == 25,]M_sub就是其解如果n个就expand.grid 好几个 把解空间延展出去只是这方法 n太大可能就没办法做了