「金箍咒」我的全排列組合演算法設計演化之三無限巢狀

2021-07-10 09:20:50 字數 1088 閱讀 8247

迴圈巢狀是非常常用的,之前已經發布寫過雙迴圈巢狀的控制變數變形巢狀,在此基礎上,演化出無限巢狀演算法:

string 字串 = "123456789";

int 量 = 字串.length, 跟 = 0, 定 = 3, 巢狀量 = 量 - 定;

int 無限巢狀 = enumerable.range(定, 巢狀量).toarray();

do++跟;

}if (無限巢狀[巢狀量 - 1] >= 0)

console.writeline(string.join(" ", 無限巢狀));

--無限巢狀[0];

跟 = 0;

} while (無限巢狀[巢狀量 - 1] >= 0);

string 字串 = "abcdefghijklmnopqrstuvwxyz", 輸出 = "";

int 量 = 字串.length, 跟 = 量;

int 無限巢狀 = enumerable.repeat(0, 量).toarray();do}

if (無限巢狀[0] < 量)

" ", 無限巢狀));

foreach (int aa in 無限巢狀)

輸出 += 字串[aa].tostring();

++無限巢狀[量 - 1];

跟 = 量;

console.writeline(輸出); 輸出 = "";

} while (無限巢狀[0] < 量);

多年前的想法,今天終於實現了,自動巢狀迴圈的演算法,從此不再侷限於固定的巢狀迴圈,以後都可以使用動態的巢狀迴圈。2023年1月25日10:05

今天整理演算法設計演化過程,只是想留給後人參考;寫演算法我的原則:從易到難,從最簡單的語句到優化演算法,寫演算法是慢工細活,慢慢推演轉化的過程,與彈指神功無關,任何彈指神功都不如複製貼上來的快,彈指神功對寫演算法有何用?彈指神功對於文章編輯講求經濟效率有關,而與寫演算法毫無關係,寫演算法是要分析得快,邏輯推演得快,這只與動腦快有關,該演算法自打算自己設計想法起經歷約月的構思、除錯、演化、優化,這裡之所以說些彈指神功的話題,是因為人有個特點,越急越想不出來,越想不出來就越不愛自己想了。

「金箍咒」我的全排列組合演算法設計演化之一重組字串

由約瑟夫環報數出局演算法串聯字串啟發起static string 金箍 int 陣列,int 量,int 起位,int 間隔 while 量 數 return 輸出 int aa console.writeline 金箍 aa,4,0,1 int 起 0,隔 1,量 0 list金箍咒 new li...

C 全排列組合演算法

題目描述 給定乙個由不同的小寫字母組成的字串,輸出這個字串的所有全排列。我們假設對於小寫字母有 a b y z 而且給定的字串中的字母已經按照從小到大的順序排列。輸入描述 輸入只有一行,是乙個由不同的小寫字母組成的字串,已知字串的長度在1到6之間。輸出描述 輸出這個字串的所有排列方式,每行乙個排列。...

高效率的排列組合演算法

組合演算法 本程式的思路是開乙個陣列,其下標表示1到m個數,陣列元素的值為1表示其下標 代表的數被選中,為0則沒選中。首先初始化,將陣列前n個元素置1,表示第乙個組合為前n個數。然後從左到右掃瞄陣列元素值的 10 組合,找到第乙個 10 組合後將其變為 01 組合,同時將其左邊的所有 1 全部移動到...