首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

遍历算法的替代方案

2013-09-28 
求一个遍历算法的替代方案遍历算法中我希望实现当index1,index2,index3,index4,index5中不等于0时才有下面

求一个遍历算法的替代方案
遍历算法中我希望实现当index1,index2,index3,index4,index5中不等于0时才有下面对应的for循环,如果等于0的话就不循环这个for循环,不知道有没有什么解决方案?或者说有没有替代的方法


            int index1=3;
int index2=3;
int index3=2;
int index4=4;
int index5=4

            int totalStep = 500

            for (int i1 = 0; i1 < index1;i1++ )
            {
                for (int i2 = 0; i2 < index2; i2++)
                {
                    for (int i3 = 0; i3 < index3; i3++)
                    {
                        for (int i4 = 0; i4 < index4; i4++)
                        {
                            for (int i5 = 0; i5 < index5; i5++)
                            {
                                for (int time = 0; time < totalStep; time++)
                                {
                                   //dosomething
                                }
                            }
                        }
                    }
                }
            }
算法 遍历 解决方案
[解决办法]
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ForAndFor
{
    class Program
    {
        static void Main(string[] args)
        {
            int[][] data = new int[][]?
????????????{?
????????????????new?int[]?{?1,?2,?3?},
????????????????new?int[]?{?4,?5?},
????????????????new?int[]?{?7,?8?},
????????????????new?int[]?{?9?}
????????????};
            var query = data[0].Select(x => new int[] { x }).ToList();
            foreach (var item in data.Skip(1))
            {
                query = query.SelectMany(x => item.Select(y => x.Concat(new int[] { y }).ToArray())).ToList();
            }
            foreach (var item in query)
            {
                Console.WriteLine(string.Join(", ", item));


            }
        }
    }
}



不好意思,之前用的VS2012,编译器修改了。

在VS2010上使用上面的代码。

热点排行