[待解决问题] 二维数组 遍历路径问题
提问时间: 2008-03-16 15:37
悬赏分:10 该问题已到期 浏览:296 次

一个二维数组内的数据如下排列
1a 1b   null null null null
2a null null null null null
3a 3b   null null null null
4a null null null null null
5a null null null null null
6a null null null null null
7a 7b   null null null null
如何用算法实现的得到如下的几个排列?
1a-2a-3a-4a-5a-6a-7a
1a-2a-3b-4a-5a-6a-7a
1a-2a-3a-4a-5a-6a-7b
1a-2a-3b-4a-5a-6a-7b
1b-2a-3a-4a-5a-6a-7a
1b-2a-3b-4a-5a-6a-7a
1b-2a-3a-4a-5a-6a-7b
1b-2a-3b-4a-5a-6a-7b


提问者:gguowang - 初学一级
所有回答(2)
7层循环?

1个月前   回答者:暗香浮动 - 菜鸟二级
    class Program
    {
        static void Main(string[] args)
        {
            string[][] elements = new string[][]{
             new string[]{"1a","1b"},
             new string[]{"2a"},
             new string[]{"3a","3b"},
             new string[]{"4a"},
             new string[]{"5a"},
             new string[]{"6a"},
             new string[]{"7a", "7b"},
            };

            //算出组合总个数
            int total = 1;
            for (int x = 0; x < elements.Length; x++)
                total *= elements[x].Length;

            //创建存放组合的临时数组
            string[] row = new string[elements.Length];

            //编历生成组合
            for (int i = 0; i < total; i++)
            {
                int current = 0, next = i;
                for (int j = 0; j < row.Length; j++)
                {
                    current = next;
                    int max = elements[j].Length;
                    if (current >= max) //当下标溢出时进位
                    {
                        next = current / max;
                        current = current % max;
                    }
                    else
                    {
                        next = 0;
                    }

                    row[j] = elements[j][current];
                }
                Console.WriteLine(string.Join("-", row));
            }
            Console.Read();
        }
    }

1个月前   回答者:Klesh Wong - 小虾三级
   您需要登录以后才能回答!
我的问题    我要提问


快到期问题

> 问题排行榜

有不合适内容,建议去除