题库 信息学奥赛题库 题目列表 #include <iostream>using namespace std;const...
组合题

#include <iostream>

using namespace std;

const int N = 110;

bool isUse[N];

int n, t;

int a[N], b[N];

bool isSmall() {

    for (int i = 1; i <= n; ++i)

        if (a[i] != b[i]) return a[i] < b[i];

    return false;

}

bool getPermutation(int pos) {

    if (pos > n) {

        return isSmall();

    }

    for (int i = 1; i <= n; ++i) {

        if (!isUse[i]) {

            b[pos] = i; isUse[i] = true;

            if (getPermutation(pos + 1)) {

                return true;

            }

            isUse[i] = false;

        }

    }

    return false;

}

void getNext() {

    for (int i = 1; i <= n; ++i) {

        isUse[i] = false;

    }

    getPermutation(1);

    for (int i = 1; i <= n; ++i) {

        a[i] = b[i];

    }


}

int main() {

    scanf("%d%d", &n, &t);

    for (int i = 1; i <= n; ++i) {

        scanf("%d", &a[i]);

    }

    for (int i = 1; i <= t; ++i) {

        getNext();

    }

    for (int i = 1; i <= n; ++i) {

        printf("%d", a[i]);

        if (i == n) putchar(’\n’); else putchar(’ ');

    }

    return 0;

}

输入1:6 10 1 6 4 5 3 2 输入2:6 200 1 5 3 4 2 6

第 1 题 填空
第 2 题 填空
题目信息
2018年 初赛
-
正确率
0
评论
50
点击