Matlab 排列组合从{1,2,3}中取出任意数进行排列,顺序不同算不同,要求产生的排列长度最多为5,问有多少种排列,分别是什么?例如 {1}{2}{3}.{11233}{11322}.{33333}
来源:学生作业帮助网 编辑:作业帮 时间:2024/11/28 11:02:19
Matlab 排列组合从{1,2,3}中取出任意数进行排列,顺序不同算不同,要求产生的排列长度最多为5,问有多少种排列,分别是什么?例如 {1}{2}{3}.{11233}{11322}.{33333}
Matlab 排列组合
从{1,2,3}中取出任意数进行排列,顺序不同算不同,要求产生的排列长度最多为5,问有多少种排列,分别是什么?
例如 {1}
{2}
{3}.
{11233}{11322}
.
{33333}
Matlab 排列组合从{1,2,3}中取出任意数进行排列,顺序不同算不同,要求产生的排列长度最多为5,问有多少种排列,分别是什么?例如 {1}{2}{3}.{11233}{11322}.{33333}
楼上的答案是正确的,但存在一些小问题:
1、循环到55555是没道理的,应该到33333,因为最大值只可能是33333.
2、程序效率太低,在我的电脑上运行需要几十秒.可以进一步优化,把效率提高几倍是可能的.
>> x
x =
1
2
3
11
12
13
21
22
23
31
32
33
111
112
113
(限于篇幅,中间删除部分行)
33311
33312
33313
33321
33322
33323
33331
33332
33333
>> whos x
Name Size Bytes Class
x 363x1 2904 double array
3+3*3+3*3*3+3*3*3*3+3*3*3*3*3=3+9+27+81+243=363还要求所有排列~~1 2 3
11 12 13 21 22 23 31 32 33
这么写下去就可以了啊额,求matlab代码,非手写好的,试下
count=0;
data=[];
for i=1:55555
str=num2str(i);
...
全部展开
3+3*3+3*3*3+3*3*3*3+3*3*3*3*3=3+9+27+81+243=363
收起