亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

c語言怎么實現排列組合算法

小億
166
2023-11-23 09:03:40
欄目: 編程語言

C語言實現排列組合算法可以使用遞歸或迭代的方式來實現。以下是使用遞歸實現排列組合算法的示例代碼:

#include <stdio.h>

// 計算階乘
int factorial(int n) {
    if (n <= 1) {
        return 1;
    } else {
        return n * factorial(n - 1);
    }
}

// 排列
void permutation(int arr[], int start, int end) {
    if (start == end) {
        for (int i = 0; i <= end; i++) {
            printf("%d ", arr[i]);
        }
        printf("\n");
    } else {
        for (int i = start; i <= end; i++) {
            // 交換arr[start]和arr[i]
            int temp = arr[start];
            arr[start] = arr[i];
            arr[i] = temp;

            permutation(arr, start + 1, end);

            // 恢復arr[start]和arr[i]的交換
            temp = arr[start];
            arr[start] = arr[i];
            arr[i] = temp;
        }
    }
}

// 組合
void combination(int arr[], int data[], int start, int end, int index, int r) {
    if (index == r) {
        for (int i = 0; i < r; i++) {
            printf("%d ", data[i]);
        }
        printf("\n");
        return;
    }

    for (int i = start; i <= end && end - i + 1 >= r - index; i++) {
        data[index] = arr[i];
        combination(arr, data, i + 1, end, index + 1, r);
    }
}

int main() {
    int arr[] = {1, 2, 3};
    int n = sizeof(arr) / sizeof(arr[0]);

    // 排列
    printf("Permutations:\n");
    permutation(arr, 0, n - 1);

    // 組合
    printf("\nCombinations:\n");
    for (int r = 1; r <= n; r++) {
        int data[r];
        combination(arr, data, 0, n - 1, 0, r);
    }

    return 0;
}

以上代碼中,permutation函數使用遞歸實現排列算法,combination函數使用遞歸實現組合算法。可以根據需要傳入不同的起始位置和結束位置來計算不同長度的排列組合。

0
阿拉善左旗| 盐池县| 枝江市| 扬州市| 金塔县| 宣化县| 外汇| 和顺县| 扎赉特旗| 通化县| 绥江县| 巴彦县| 榕江县| 双牌县| 新丰县| 洛隆县| 宜君县| 宜春市| 莎车县| 长顺县| 新蔡县| 台北县| 尚志市| 邳州市| 沂南县| 剑川县| 东丰县| 武川县| 凌海市| 邵阳县| 濮阳市| 桐柏县| 普宁市| 铜梁县| 辉县市| 东山县| 崇州市| 克东县| 分宜县| 德安县| 张北县|