[PAT解题报告] Shuffling Machine
简单题,给定54张牌,每个数代表一张牌,然后有一种操作关系,每次操作告诉你把现在第i张牌放在第j=p[i]个位置,这样不断操作k次,问最终结果。直接模拟即可,注意点主要就是最后要把数字还原成牌的表示。而且k不大,直接循环操作即可。
代码:
#include <cstdio> #include <string> #include <cstring> using namespace std; const char *c = "SHCD"; char temp[54][4], card[54][4]; int a[54]; int main() { int n = 0; for (int i = 0; i < 4; ++i) { for (int j = 0; j < 13; ++j) { sprintf(card[n++], "%c%d",c[i],j + 1); } } strcpy(card[52], "J1"); strcpy(card[53], "J2"); scanf("%d",&n); for (int i = 0; i < 54; ++i) { scanf("%d",a + i); } while (n--) { for (int i = 0; i < 54; ++i) { strcpy(temp[a[i] - 1], card[i]); } for (int i = 0; i < 54; ++i) { strcpy(card[i], temp[i]); } } for (int i = 0; i < 54; ++i) { if (i) { putchar(' '); } printf("%s",card[i]); } puts(""); return 0; }
原题连接: http://www.patest.cn/contests/pat-a-practise/1042