【題解】LightOJ-1023 Discovering Permutations

【題目敘述】https://vjudge.net/problem/LightOJ-1023

#include <bits/stdc++.h>
using namespace std;

int t, n, k, used[26], anscnt;
string ans;

void f(int cnt){
    if (cnt == n){
        cout << ans << "\n";
        anscnt++;
        return;
    }
    if (anscnt == k) return;
    for (int i = 0; i < n; i++){
        if (!used[i]){
            used[i] = 1;
            ans += (char)('A'+i);
            f(cnt+1);
            used[i] = 0;
            ans.pop_back();
        }
    }
}

int main(){
    cin >> t;
    for (int Case = 1; Case <= t; Case++){
        cin >> n >> k;
        anscnt = 0;
        cout << "Case " << Case << ":\n";
        f(0);
    }
}
分享本文 Share with friends