[1,2,5,4],[2,3],[7,8,6]假设三个数组 要组合成127,128,126,227这样的组合 算法写不出来 请各位高手帮帮忙 看下
解决方案
5
假如有顺序的话,可以参考矩阵连乘算法。
例如[1,2,5,4],[2,3],[7,8,6],,先合并[1,2,5,4],[2,3],得到4*2=8个元素[12,13,22,23,52,53,42,43],再把[12,13,22,23,52,53,42,43]和[7,8,6]合并得到8*3=24个元素。假如要求去重,就用集合定义数组。否则直接遍历。
要做的只是,定义一个 Set merge(Set a,Set b){ 合并a和b,返回结果集c}。
然后对输入集合a,b,c,依次调用merge函数。
例如[1,2,5,4],[2,3],[7,8,6],,先合并[1,2,5,4],[2,3],得到4*2=8个元素[12,13,22,23,52,53,42,43],再把[12,13,22,23,52,53,42,43]和[7,8,6]合并得到8*3=24个元素。假如要求去重,就用集合定义数组。否则直接遍历。
要做的只是,定义一个 Set merge(Set a,Set b){ 合并a和b,返回结果集c}。
然后对输入集合a,b,c,依次调用merge函数。
5
for i
for j
string.join(“”, arr[i][j])
for j
string.join(“”, arr[i][j])
90
其实可以把它当成一个练习。当你能写出本人组合,编程技术就会提高一步。
// 用linq作的方示 using System; using System.Linq; class Program { static void Main(string[] args) { int[] a = { 1, 2, 5, 4 }; int[] b = { 2, 3 }; int[] c = { 7, 8, 6 }; var ps = from i in a from j in b from k in c select i + "" + j + "" + k; foreach (var p in ps) { Console.WriteLine(p); } } }