1. 程式人生 > >1042 Shuffling Machine(補充程式碼+洗牌模擬(下標轉化))

1042 Shuffling Machine(補充程式碼+洗牌模擬(下標轉化))

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
const int N = 54;///54張牌。
char color[5] = {'S','H','C','D','J'};///5種顏色的牌。
int start[N+1];///起始位置的編號
int end[N+1];///可以看作是中間陣列
int next[N+1];///操作後的位置
int main()
{
    int k;
    scanf("%d",&k);
    for(int i=1;i<=N;i++)
        start[i] = i;///初始化。
    for(int i=1;i<=N;i++)
        scanf("%d",&next[i]);///輸入處理後的位置。
    for(int j=1;j<=k;j++)
    {
        for(int i=1;i<=N;i++)
            end[next[i]] = start[i];///第next[i]個數來自於start[i];
        for(int i=1;i<=N;i++)
            start[i] = end[i];///為後續的工作做準備。
    }
    for(int i=1;i<=N;i++)
    {
        start[i]--;///注意一下。
        printf(i==N?"%c%d\n":"%c%d ",color[start[i]/13],start[i]%13+1);
    }
    return 0;
}