文章

4

粉丝

38

获赞

6

访问

307

头像
全排列 题解:迭代方式生成全排列
P1185 中国矿业大学/北京大学机考题
发布于2025年1月6日 10:57
阅读数 99

#include <stdio.h>
#include <string.h>

// 交换两个字符
void swap(char *x, char *y) {
    char temp = *x;
    *x = *y;
    *y = temp;
}

// 检查是否为下一个排列
int next(char *str, int length) {
    int i = length - 2;
    while (i >= 0 && str[i] >= str[i + 1]) {
        i--;
    }
    if (i == -1) {
        return 0; // 已经是最后一个排列
    }
    int j = length - 1;
    while (str[j] <= str[i]) {
        j--;
    }
    swap(&str[i], &str[j]);
    int k = i + 1, l = length - 1;
    while (k < l) {
        swap(&str[k], &str[l]);
        k++;
  ...

登录查看完整内容


登录后发布评论

暂无评论,来抢沙发