作者:风之淡然1_925 | 来源:互联网 | 2023-05-18 15:57
有m个数组,每个数组有n个元素。列出所有可能的组合。如:arr1{aa,bb,cc},arr2{11,22,33},得到的组合是:aa11,aa22,aa33,bb11,bb22,bb33,c
有m个数组,每个数组有n个元素。列出所有可能的组合。
如:arr1{aa,bb,cc},arr2{11,22,33},得到的组合是:
aa11,aa22,aa33,bb11,bb22,bb33,cc11,cc22,cc33
数组个数不确定,每个数组的元素也不确定。
10 个解决方案
可惜CSDN有份文档下载不了,要不然可以解决这个问题
arr1{aa,bb,cc},arr2{11,22,33},arr3{aa,bb,cc},arr4{aa,bb,cc}甚至更多,而且每个arr1-4数组里元素个数都是不固定的
哦,以前写过一个
http://topic.csdn.net/u/20110606/13/b41f8542-9996-4494-9bf2-313ac784a44b.html
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
string[][] sum = new string[m][];
Random r = new Random();
for (int i = 0; i < m; i++)
{
sum[i] = new string[n];
for (int j = 0; j < n; j++)
{
sum[i][j] = r.Next(10).ToString();
}
}
foreach (var s in sum)
{
printf(s.ToList());
}
fun(new System.Collections.Generic.List(), sum, 0);
}
}
const int m = 5;
const int n = 5;
public void fun(System.Collections.Generic.List lst, string[][] str, int index)
{
if (index == str.Count())
printf(lst);
if (index >= str.Count())
return;
foreach (var s in str[index])
{
lst.Add(s);
fun(lst, str, index + 1);
lst.RemoveAt(lst.Count - 1);
}
}
public void printf(System.Collections.Generic.List lst)
{
lst.ForEach(t => Response.Write(t));
Response.Write("
");
}