【发布时间】:2015-04-10 19:59:09
【问题描述】:
我一直在尝试通过将其放入循环来简化以下内容..
int A0 = 0, A1 = 0, A2 = 0;
for (A0 = 0; A0 < nums.Length; A0++)
{
for (A1 = 0; A1 < nums.Length; A1++)
{
for (A2 = 0; A2 < nums.Length; A2++)
{
string ss = nums[A0] + nums[A1] + nums[A2];
dataGridView1.Rows.Add(new string[] { ss });
}
}
}
像 A0、A1 和 A2 一样,我需要一直到 A75。如果我像上面那样嵌套,我可以得到结果。但是我怎么能把它放在一个循环中..??
我试过这个:
int[] A = new int[3];
for (int i = 0; i < A.Length; i++)
{
for (A[i] = 0; A[i] < nums.Length; A[i]++)
{
string ss = "";
for (int j = 0; j < A.Length; j++) ss += nums[A[i]];
dataGridView1.Rows.Add(new string[] { ss });
}
}
但它的表现只会像..
int A0 = 0, A1 = 0, A2 = 0;
for (A0 = 0; A0 < nums.Length; A0++)
{
string ss = nums[A0] + nums[A1] + nums[A2];
dataGridView1.Rows.Add(new string[] { ss });
}
for (A1 = 0; A1 < nums.Length; A1++)
{
string ss = nums[A0] + nums[A1] + nums[A2];
dataGridView1.Rows.Add(new string[] { ss });
}
for (A2 = 0; A2 < nums.Length; A2++)
{
string ss = nums[A0] + nums[A1] + nums[A2];
dataGridView1.Rows.Add(new string[] { ss });
}
【问题讨论】:
-
您要解决的具体问题是什么?
-
您要与自己交叉加入一个列表 75 次?目的是什么?你意识到这会给你
nums.Length ^ 75行,对吧?即使只有两个元素超过 377,789,320,000,000,000,000,000,000,000 行。 -
是的,但您所说的算法可能需要超过 40,000 天才能运行!那就是如果你每秒可以进行一百万次迭代,这是值得怀疑的。
-
嵌套循环没有内置语法。如果你能更好地解释你想要达到的目标,也许有更好的方法来解决它。
-
@DonBoitnott 我相信这可能是我们在 Code Review 上所说的“示例代码”和“未编写的代码”,这在此处是题外话。我们也有similar questions in the past
标签: c# loops combinations