天天看点

【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;
}