我有一種方法,它接收數字n
作爲參數,並計算在位(0,1)數組中完全包含n 1
的所有可能的組合,返回的結果是數1計算位數組中1的所有可能位置
例如假設我們的位陣列具有3
元件和
for n = 1
the function gives : [0] - [1] - [2] (three possible positions)
for n=2
the result will be [0,1] - [0,2] - [1,2] (three possible positions)
和對於n = 3 結果將是[0,1,2](一種可能的位置)
功能正常工作與3個元素數組,但給出了4個元素
n = 2 result : [0,1] - [0,2] - [0,3] -[1,2] - [1,3] - [1,2,3]
錯結果的任何一個都可以解釋爲什麼它給出意想不到的結果爲ARRAYSIZE預先> = 4
由於
const int arraySize = 4;
static private void Positions(int n, int start, ArrayList prepend, ArrayList results)
{
ArrayList tmp = new ArrayList(prepend);
int end = arraySize - n;
for (int i = start; i <= end; i++)
{
if (end < arraySize - 1)
{
prepend.Add(i);
Positions(n - 1, i + 1, prepend, results);
prepend = tmp;
}
else
results.Add(new ArrayList(prepend) { i });
}
}
這是我如何使用此方法
static void Main(string[] args)
{
ArrayList results = new ArrayList();
Positions(2, 0, new ArrayList(), results);
foreach (ArrayList array in results)
{
foreach (var elem in array)
Console.Write(elem);
Console.WriteLine();
}
Console.Read();
}
爲您3種元素,N = 2,它不應該是'[0,1] - [0 ,2] - [1,2]'? – mellamokb
@mellamokb你是對的我編輯我的文章 –