1042 Shuffling Machine题解
因为每一趟的顺序改变,都只是下标的改变,其值不会发生变换,以空间换时间
1、把下标值index和card的值存放在一个结构体中
2、每一趟将结构体中的index更新
3、以index从小到大的顺序 sort()结构体
4、重复第一步,操作次数为k
#include <iostream>
#include <algorithm>
#include <string.h>
using namespace std;
int order[54];
struct node
{
int v;
int pos;
}card[54];
bool cmp(node a,node b)
{
return a.pos<b.pos;
}
string getName(int v)
{
if (v <= 13)
return "S" + to_string(v);
if (v <= 26)
return "H" + to_string(v-13);
if (v <= 39)
return "C" + to_string(v-26);
if (v <= 52)
return "D" + to_string(v-39);
if (v == 53)
return "J1";
return "J2";
}
int main(int argc, const char * argv[]) {
int k;
cin>>k;
for (int i=0; i<54; i++)
{
cin>>order[i];
card[i].pos = i+1;
card[i].v = i+1;
}
while (k--)
{
for (int i=0; i<54; i++)
card[i].pos = order[i];
sort(card, card+54, cmp);
}
cout<<getName(card[0].v);
for (int i=1; i<54; i++)
cout<<" "<<getName(card[i].v);
return 0;
}
最后贴一个运行测试点结果截图

第一次写博客,哈哈哈哈哈哈哈,希望以后自己都会养成写博客的好习惯(狗头)
版权声明:本文为yunshen2711原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。