페이지

10597번: 순열장난

https://www.acmicpc.net/problem/10597


O(...) 대략 (n/2)C9

n을 정하고 모든 경우를 조사


#include<cstdio>
#include<cstdlib>
#include<cstring>
char s[92];
int len, n, r[50], ck[51];
void f(int hint pint x) {
    if (p == n) {
        for (int i = 0; i < n; i++) printf("%d ", r[i]);
        exit(0);
    }
    x = x * 10 + s[h] - '0';
    if (!x || x > n) return;
    if (!ck[x]) {
        ck[x] = 1;
        r[p] = x;
        f(h + 1, p + 1, 0);
        ck[x] = 0;
    }
    f(h + 1, px);
}
int main() {
    scanf("%s", s);
    len = strlen(s);
    n = len < 10 ? len : 9 + (len - 9) / 2;
    f(0, 0, 0);
    return 0;
}

댓글 없음 :

댓글 쓰기