【PAT甲级】1042. Shuffling Machine (20)

来源:互联网 发布:linux ntp同步 编辑:程序博客网 时间:2024/06/08 02:49
#include <stdio.h>#define N 54int main(int argc, char* argv[]) {    int k;    scanf("%d", &k);    int i, j;    int a[N + 1] = {0};    int b[N + 1] = {0};    for (i = 1; i <= N; i++) {        scanf("%d", &a[i]);        b[i] = i;    }    int flag[N + 1] = {0};    for (j = 0; j < k; j++) {        for (int s = 1; s <= N; s++) {             flag[s] = 0;        }        for (i = 1; i <= N; i++) {            if (flag[i] == 0) {                int t = i;                int tmp = b[t];                int tmp2;                do {                    flag[a[t]] = 1;                    tmp2 = b[a[t]];                    b[a[t]] = tmp;                    tmp = tmp2;                    t = a[t];                } while (t != i);                b[a[t]] = tmp;                flag[a[t]] = 1;            }        }    }    for (i = 1; i <= N; i++) {        if ((b[i] - 1) / 13 == 0) {            printf("S%d", b[i]);        } else if ((b[i] - 1) / 13 == 1) {            printf("H%d", (b[i] - 1) % 13 + 1);        } else if ((b[i] - 1) / 13 == 2) {            printf("C%d", (b[i] - 1) % 13 + 1);        } else if ((b[i] - 1) / 13 == 3) {            printf("D%d", (b[i] - 1) % 13 + 1);        } else if ((b[i] - 1) / 13 == 4) {            printf("J%d", (b[i] - 1) % 13 + 1);        }        if (i < N) printf(" ");        else printf("\n");    }    return 0;}
0 0
原创粉丝点击