1. 程式人生 > >【PAT-A】1042. Shuffling Machine 寫題記錄

【PAT-A】1042. Shuffling Machine 寫題記錄

思路:

設定start[55],end[55]兩個陣列,每一變化以後,end 覆蓋start 然後迴圈。Sx,Dx、Hx、Cx、Jx等等可以依照次序來獲得,沒必要原樣建立55個,直接改變,這樣需要用到strcpy。注意次序和編碼的關係。

#include <cstdio> 
#include <cstring>
int main(){
	char mp[5] = {'S','H','C','D','J'};
	int start[55], end[55], k, change[55];
	for (int i=1; i<=54; i++){  
		start[i] = i;
	}
	scanf("%d",&k);
	for (int i=1;i<=54;i++){
		scanf("%d",&change[i]);
	}
	for (int step=0; step<k; step++){
		for (int i=1; i<=54; i++){
			end[change[i]] = start[i]; 
		}
		for (int i=1; i<=54; i++){
			start[i] = end[i];
		}
	}
	for (int j=1; j<=54; j++){
		if (j!=1) printf(" ");
		start[j]--;
		printf("%c%d",mp[start[j]/13],start[j]%13+1);
	}
	return 0;
}