求一个遍历算法的替代方案
遍历算法中我希望实现当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上使用上面的代码。