主题:输入一个字符串,怎么才能把字符串中所有字符的组合列出来!
xjwbzyg
[专家分:0] 发布于 2009-01-18 19:53:00
本人菜鸟一个,请问一下!
输入一个字符串,怎么才能把字符串中所有字符的组合列出来!
如果这个输入的字符串很长的话是不是会要很久才会把所有组合列出来呀!
我的意思是!比如运行程序时提示请您输入一个字符串。比如输入了“中国人”
那么最后要求计算机输出的是
中国人
中人国
人中国
人国中
国人中
国中人
好象是这个样子吧,请高手教我怎么把这个东西做出,谢谢!!
回复列表 (共3个回复)
沙发
xjwbzyg [专家分:0] 发布于 2009-01-18 22:52:00
这个问题太简单还是都不会,教一下算法了!谢谢呀!
板凳
oO羽姿Oo [专家分:600] 发布于 2009-01-18 23:07:00
先把字串拆分成字符数组.
然后排列组合.
比如:输入ABCD
把这个装入一维数组AR()中
ar(0)=A
ar(1)=B
ar(2)=C
ar(3)=D
然后使用循环进行排列.
另外.你所说的排列不太能分清是什么意思.
按你的说法应该是每个字符都参与排列.并且保持串长不变.
不包括像: 中国-国人-中人
这样的2字符排列.
要是像你那样排列的话.你可以用循环把数据元素从第一个开始.与每一个元素依次交换.
要是包含一个或是2个的所有排列.需要多层循环才行.
这种字串操作很慢.很费时.
以前我做过一个彩球选号的软件.(应该用数值排列.我直接按字符串操作了)
每组16个字符.5组.全排列的情况下用时1分40秒左右.
生成208万左右个组合.
机器:AMD ATHON 3000+ /1.5G内存/
并且内存占用很大.
我发给别人运行.他机器CR2.0-521M.
运行后就无响应了.CPU100%
所以.你要是想进行字符串排序或组合的话.
数据量最好不要太多.尽量不要用纯字符串操作大量数据.
3 楼
merry05 [专家分:8920] 发布于 2009-01-20 10:45:00
[quote]这个问题太简单还是都不会,教一下算法了!谢谢呀![/quote]
前者
我来回复