现有若干数字,将所有的排列组合可能均显示出来. 例如: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)=idinsert #1 select @swhile @@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
最近学习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()); }
那不就是无数种了?
a
aa
aaa
aaaa
aaaaa
aaaaaa
aaaaaaa
b
bb
bbb
bbbb
bbbbb
bbbbbb
例如: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)=idinsert #1 select @swhile @@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
http://www.cnblogs.com/zzp28/articles/1792484.html
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());
}
输出 abb,bab,bba
输出 abca
abac
aabc
acab
acba
baca
caba
bcaa
cbaa
baac
等..
饺子给的链接看了?