ABB的排列组合有多少种

bancxc 2010-11-08 10:34:33
给定一个字符串,如abb,求他的排列组合,字符串长度不一定,有没有好点的算法。
...全文
591 21 打赏 收藏 转发到动态 举报
写回复
用AI写文章
21 条回复
切换为时间正序
请发表友善的回复…
发表回复
bancxc 2010-11-09
  • 打赏
  • 举报
回复
大家注意 主要是排列输入的字母
bancxc 2010-11-09
  • 打赏
  • 举报
回复
输入 abca
输出 abca
abac
aabc
acab
acba
baca
caba
bcaa
cbaa
baac
等..
bancxc 2010-11-09
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 litaoye 的回复:]
LZ多举个例子,帮你想想,应该可以转为进制转化的问题
[/Quote]
比如说,输入一个字符串,abb
输出 abb,bab,bba
Teng_s2000 2010-11-09
  • 打赏
  • 举报
回复
claymore1114 2010-11-09
  • 打赏
  • 举报
回复
最近学习linq

//不分顺序
public static void NoSort()
{
List<string> list1 = new List<string>() { "A", "B", "C" };
var Query1 = (from i in list1
from j in list1
select i + j).ToList();
var Query2 = (from i in list1
from j in list1
from k in list1
select i + j + k).ToList();
list1.AddRange(Query1.ToList());
list1.AddRange(Query2.ToList());
}
//分顺序
public static void Sort()
{
List<string> list1 = new List<string>() { "A", "B", "C" };
var Query1 = (from i in list1
from j in list1
where list1.IndexOf(i) >= list1.IndexOf(j)
select i + j).ToList();
var Query2 = (from i in list1
from j in list1
from k in list1
where list1.IndexOf(i) >= list1.IndexOf(j) && list1.IndexOf(j) >= list1.IndexOf(k)
select i + j + k).ToList();
list1.AddRange(Query1.ToList());
list1.AddRange(Query2.ToList());
}
绿色夹克衫 2010-11-09
  • 打赏
  • 举报
回复
LZ多举个例子,帮你想想,应该可以转为进制转化的问题
叶子 2010-11-09
  • 打赏
  • 举报
回复
C#
http://www.cnblogs.com/zzp28/articles/1792484.html
叶子 2010-11-09
  • 打赏
  • 举报
回复


现有若干数字,将所有的排列组合可能均显示出来.
例如:4个数字
1,2,3,4
1
2
3
4
1,2
1,3
1,4
2,3
2,4
3,4
1,2,3
1,2,4
1,3,4
2,3,4
1,2,3,4
如何存储不限.

-->蓉儿

select top 100 id=identity(int,1,1) into # from sysobjects
declare @s nvarchar(100)
set @s='1,2,3,4'
select col=substring(@s,id,charindex(',',@s+',',id)-id)
into #1
from #
where charindex(',',','+@s,id)=id

insert #1 select @s

while @@rowcount>0
insert #1
select distinct left(col,len(col)-1)
from
(
select col=stuff(replace(','+b.col+',',','+a.col+',',','),1,1,'')
from #1 a,#1 b
where charindex(','+a.col+',',','+b.col+',')>0 and a.col<>b.col
) t
where left(col,len(col)-1) not in (select col from #1)


select * from #1 order by len(col)
/*
col
---------
1
2
3
4
1,2
1,3
1,4
2,3
2,4
3,4
1,2,3
1,2,4
1,3,4
2,3,4
1,2,3,4

(15 行受影响)
*/
drop table #
drop table #1




本文来自CSDN博客,转载请标明出处:
详细可见tony哥的博客:
http://blog.csdn.net/htl258/archive/2009/04/14/4071642.aspx

jianshao810 2010-11-09
  • 打赏
  • 举报
回复
是数学的那种组合吗?三个随机选取两个,或者1个,或者3个?然后顺序不同?
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 bancxc 的回复:]

你理解错了,abb是随便输入的一个字符串 哈哈引用 1 楼 zenghd 的回复:
字符串长度不一定??
那不就是无数种了?
a
aa
aaa
aaaa
aaaaa
aaaaaa
aaaaaaa
b
bb
bbb
bbbb
bbbbb
bbbbbb
[/Quote]

深奥
goodsecond 2010-11-09
  • 打赏
  • 举报
回复

lz淡定

[Quote=引用 6 楼 bancxc 的回复:]
你理解错了,abb是随便输入的一个字符串 哈哈

引用 1 楼 zenghd 的回复:
字符串长度不一定??
那不就是无数种了?
a
aa
aaa
aaaa
aaaaa
aaaaaa
aaaaaaa
b
bb
bbb
bbbb
bbbbb
bbbbbb
[/Quote]
绿色夹克衫 2010-11-09
  • 打赏
  • 举报
回复
字典序法,还有什么临位交换法,都可以解决这个问题,网上资料也不少,LZ是否还需要具体代码?

[Quote=引用 15 楼 bancxc 的回复:]

引用 12 楼 litaoye 的回复:
LZ多举个例子,帮你想想,应该可以转为进制转化的问题

比如说,输入一个字符串,abb
输出 abb,bab,bba
[/Quote]
guoyichao 2010-11-09
  • 打赏
  • 举报
回复
http://topic.csdn.net/u/20100827/11/b1b5d0ec-b453-41c0-be56-7ad467755da4.html?391068270
wiki14 2010-11-09
  • 打赏
  • 举报
回复
zhang00001230 2010-11-09
  • 打赏
  • 举报
回复
把输入的字符串拆成数组char 然后进行循环 就是要循环比较多次 不知道有没有更好的办法。
bancxc 2010-11-08
  • 打赏
  • 举报
回复
你理解错了,abb是随便输入的一个字符串 哈哈[Quote=引用 1 楼 zenghd 的回复:]
字符串长度不一定??
那不就是无数种了?
a
aa
aaa
aaaa
aaaaa
aaaaaa
aaaaaaa
b
bb
bbb
bbbb
bbbbb
bbbbbb
[/Quote]
兔子-顾问 2010-11-08
  • 打赏
  • 举报
回复
http://topic.csdn.net/u/20090217/21/f41ed9f6-f929-451c-a5c9-80d2e408422a.html?69720
slmintg 2010-11-08
  • 打赏
  • 举报
回复
这种都是用穷举吧..
在路上20130607 2010-11-08
  • 打赏
  • 举报
回复
你都这等级了·········
加载更多回复(1)

111,129

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧