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

2021-07-10 09:20:50 字數 1739 閱讀 3313

由約瑟夫環報數出局演算法串聯字串啟發起
static string 金箍(int 陣列, int 量, int 起位, int 間隔)

while (量 > ++數);

return 輸出;

}int aa = ;

console.writeline("", 金箍(aa, 4, 0, 1));

int 起 = 0, 隔 = 1, 量 = 0;

list金箍咒 = new list();

do; 量 = aa.count();

//金箍咒.add(金箍(aa, 量, 起, 隔++));

//if (隔 > 量)

console.writeline("", 金箍(aa, 量, 起, 隔++));

if (隔 >= 量)

} while (起 < 量);

"", string.join("\n\r", 金箍咒));

"----");

"", string.join("\n\r", 金箍咒.distinct()));

「金箍」系列下標取值組合演算法:

static string 金箍(int 陣列, int 量, int 起位, int 間隔)

while (量 > ++數);

return 輸出;

}

int aa = ;

int 起 = 0, 隔 = 1, 量 = aa.count();

do", 金箍(aa, 量, 起, 隔++));

if (隔 >= 量)

} while (起 < 量);

static string 金箍(string 字串, int 量, int 起位, int 間隔)

while (量 > ++數);

return 輸出;

}

static string 對換(string 字串, int 量)

while ((數 += 2) < 量);

return 輸出;

}

static string 金箍換(string 字串, int 量, int 起位)

else if (數 > 起位)

輸出 += 字串[數++ % 量].tostring();

} while (數 < 量);

return 輸出;

}

修改為可按指定位置交換的演算法:

static string 金箍換(string 字串, int 量, int 起位, int 間隔)

else if (數 == 起位)

while (++計 < 間隔);

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

數 += 2 + 間隔;

}else if (數 > 起位)

輸出 += 字串[數++ % 量].tostring();

} while (數 < 量);

return 輸出;

}

console.write(金箍換("123456", 6, 4, 3));

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

迴圈巢狀是非常常用的,之前已經發布寫過雙迴圈巢狀的控制變數變形巢狀,在此基礎上,演化出無限巢狀演算法 string 字串 123456789 int 量 字串.length,跟 0,定 3,巢狀量 量 定 int 無限巢狀 enumerable.range 定,巢狀量 toarray do 跟 if...

C 全排列組合演算法

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

高效率的排列組合演算法

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