pat-1042

#include<iostream>
using namespace std;
int a[55],start[55],eend[55];
int main(){
	int n;
	scanf("%d",&n);
	for(int i=1;i<55;i++){
		scanf("%d",&a[i]);
	}
	for(int i=0;i<55;i++){
		start[i]=i;
		eend[i]=i;
	}
	for(int i=0;i<n;i++){
		for(int j=0;j<55;j++){
			start[j]=eend[j];
		}
		for(int q=1;q<55;q++){
			eend[a[q]]=start[q];
		}
	}
	char c[6]="SHCDJ";//需要半括最后'\0' 
	for(int i=1;i<=54;i++){
		if(i!=1)printf(" ");
		int ttt=eend[i]-1;//针对除余为0的情况 边界处使字母正确 
		printf("%c%d",c[ttt/13],ttt%13+1);//刚够再加回来取余   使取余正确 
	}
	return 0; 
}

总结

1.模拟棋牌分发,注意边界取余是0的元素,原值-1使他字母正确,余数+1使他的取余正确

 2.char 型数组分配时大小是字母的长度+1因为还有一个'\0'

英语

 

pat-1042

 

问题  无 

 

pat-1042

 

上一篇:剑指 Offer 55 - I. 二叉树的深度


下一篇:学习笔记(4):python入门教程-python注意事项