題目:用數字 1、2、3、4 組成三位數,要求百、十、個位數字互不相同,輸出所有組合並計數。
#include <stdio.h>
int main() {
int count = 0;
for (int i = 1; i <= 4; i++) // 百位
for (int j = 1; j <= 4; j++) // 十位
for (int k = 1; k <= 4; k++) // 個位
if (i != j && i != k && j != k) {
printf("%d%d%d ", i, j, k);
count++;
}
printf("\ncount=%d\n", count);
return 0;
}
123 124 132 134 142 143 213 214 231 234 241 243
312 314 321 324 341 342 412 413 421 423 431 432
count=24
排列數 P(4,3) = 4 × 3 × 2 = 24,與程序結果一致。
若需從 n 個元素中取 m 個生成排列,可使用遞歸 + 訪問標記陣列,更具通用性。