数组组合排列问题

77413036 2011-05-23 04:36:13
例如有3个数组
string[] arr1= { "0", "1", "2" };
string[] arr2= { "a", "b", "c" };
string[] arr3= { "A", "B", "C" };

想实现排列组合为:
0aA,0aB,0aC,0bA,0bB,0bC.......2cB,2cC的效果,
全排列出来,顺序无所谓,但是要全排列。

 foreach (var a1 in arr1)
{
foreach (var a2 in arr2)
{
foreach (var a3 in arr3)
{
Console.WriteLine(a1+a2+a3);
}
}
}

这种效率不高,求高效率方法。求代码。递归没学好,但是没时间慢慢学了。
感激不尽。
...全文
108 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
SaintLance 2011-05-23
  • 打赏
  • 举报
回复
要吧全排列输出的复杂度就已经是n^3了,你的算法没有优化的必要和空间。
77413036 2011-05-23
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 icedmilk 的回复:]
string[] arr1= { "0", "1", "2" };
数组最后加入一个空字符串就解决这个问题了
string[] arr1= { "0", "1", "2", ""};
[/Quote]

原来如此,感谢。结贴。
Icedmilk 2011-05-23
  • 打赏
  • 举报
回复
string[] arr1= { "0", "1", "2" };
数组最后加入一个空字符串就解决这个问题了
string[] arr1= { "0", "1", "2", ""};
77413036 2011-05-23
  • 打赏
  • 举报
回复

想实现排列组合为:
0a,0aA,0A,0aB,0B,0aC,0C,0b,0bA,0bB,0bC.......的效果,
2个的,3个的都进行排列呢,
Icedmilk 2011-05-23
  • 打赏
  • 举报
回复
对你的需求来说,这就是最有效率的办法,不占多余内存,不占多余时间

27种结果循环27次搞定

这也不能称之为排列组合
结果的每个位置上可能出现的字符都是完全独立的,遍历搞定


[Quote=引用 3 楼 show_594 的回复:]
引用 2 楼 icedmilk 的回复:
你说的方法应该就差不多了吧,你为什么说他效率不高呢?


数据量大了的时候,可能就不高了。
[/Quote]
77413036 2011-05-23
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 icedmilk 的回复:]
你说的方法应该就差不多了吧,你为什么说他效率不高呢?
[/Quote]

数据量大了的时候,可能就不高了。
Icedmilk 2011-05-23
  • 打赏
  • 举报
回复
你说的方法应该就差不多了吧,你为什么说他效率不高呢?
bdmh 2011-05-23
  • 打赏
  • 举报
回复
考虑全排列算法吧,百度,有很多源码

110,536

社区成员

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

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

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