我在製作算法時遇到了困難,這些算法以一種從「0」開始的升序排序的方式「洗牌」一組數字,下一個數字不得超過前一個數字+ 1,它們的長度也必須爲15,並且必須包含該組數字中的每一個數字。例如,如果我們有數字:C#查找數字的所有可能組合
0,1
期望的輸出是:
0,0,0,0,0,0,0,0, 0,0,0,0,0,0,1(是的是14個零)
0,0,0,0,0,0,0,0,0,0,0,0,0,0, 1,1
..
0,1,1,1,1,1,1,1,1,1,1,1,1,1,1
同樣如此,如果數字是
0,1,2
0,0,0,0,0,0,0,0,0,0,0,0,0,1,2(必須包含每數)
我嘗試了以下,我失敗了:
版本1個
private static List<List<int>> GetNumbers(int lastNumber)
{
if (lastNumber == 0)
{
return new List<List<int>> { new List<int> { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } };
}
int[] setOfNumbers = new int[lastNumber + 1];
List<List<int>> possibleRoutes = new List<List<int>>().ToList();
for (int i = 0; i <= lastNumber; i++)
{
setOfNumbers[i] = i;
}
var temp = new List<int>();
int[] possibleRoute = new int[15];
for (int j = 0; j < size - lastNumber; j++)
{
possibleRoute[j] = 0;
}
for (int j = lastNumber; j < possibleRoute.Length; j++)
{
for (int k = j; k > 0; k--)
{
possibleRoute[k] = lastNumber - 1;
}
for (int i = size - 1; i >= j; i--)
{
possibleRoute[i] = lastNumber;
}
possibleRoutes.Add(possibleRoute.ToList());
generalCounter++;
}
return possibleRoutes;
}
2版
private static List<List<int>> GetNumbers(int lastNumber)
{
if (lastNumber == 0)
{
return new List<List<int>> {new List<int> {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
}
int[] setOfNumbers = new int[lastNumber + 1];
List<List<int>> possibleRoutes = new List<List<int>>().ToList();
for (int i = 0; i <= lastNumber; i++)
{
setOfNumbers[i] = i;
}
var temp = new List<int>();
int[] possibleRoute = new int[15];
for (int j = 0; j < size - lastNumber; j++)
{
possibleRoute[j] = 0;
}
for (int i = 1 ; i <= lastNumber ; i++)
{
int newNumber = lastNumber - i;
for (int k1 = i + 1; k1 <= size; k1++)
{
for (int j = possibleRoute.Length - 1; j > k1 - i - 1; j--)
{
possibleRoute[j] = lastNumber;
}
for (int k = i; k <= k1 - 1; k++)
{
possibleRoute[k] = newNumber;
}
possibleRoutes.Add(possibleRoute.ToList());
generalCounter++;
}
}
return possibleRoutes;
}
你能證明你到目前爲止已經嘗試過嗎? –
現在可以請你解釋一下你有什麼特別的問題嗎?什麼不起作用?請記住,這個網站上的人是真實的人,如果沒有你告訴我們,你就會無法猜測你的想法。我們不會只看一眼你的代碼,並能看到它的問題,我們也不會把它「回到我們的桌子上」,花幾個小時試圖弄清楚如何使它工作。這個網站是關於*特定的*問題。 –
那麼代碼被徹底打破了,那裏有1個以上的問題,我真的期待着一個不同的方法,然後我的人我真的不需要人工處理我的代碼,因爲它太糟糕了,我仍然是初學者,而我張貼它只是爲了告訴你,我盡我所能,但無法使其工作。 – KOPEUE