シャッフルマシン(20)

シャッフルマシン(20)

制限時間メモリ制限1000msの65536キロバイト限界符号長決意プログラム(から100キロバイト標準 

タイトル説明

シャッフルは、トランプのデッキをランダム化するために使用する手順です。
標準シャッフリング技術が弱いと見られ、およびするためにされているため
、従業員は、ギャンブラーとのコラボレーション「内部ジョブ」を避ける
不十分なシャッフルを行うことでは、多くのカジノが採用自動
  シャッフルマシンをあなたの仕事は、シャッフル機をシミュレートすることです。

マシンは、与えられたランダムによれば54枚のカードのデックをシャッフル
所定回数の注文を繰り返します。と仮定される
カードデッキの初期状態は、次の順序である:

S1、S2、...、S13、

H1、H2、...、H13、

C1、C2、...、C13、

D1、D2 、...、D13、

J1、J2

「S」はため「スペード」、「H」の略で
、「ハート」、「C」のための「クラブ」、「D」のための
「ダイヤモンド」、および「ジョーカー」の「J」。所定の
順序は、[1、54]における異なる整数の順列です。数ならば
、i番目の位置では、jは、それはに位置iからカードを移動することを意味する
位置j。S3、H5、C1、D13:例えば、我々は唯一の5枚のカードがあると
し、J2を。シャッフリングの順序{4、2、5、3、1}が与えられると、結果は次のようになります
J2、H5、D13、S3、C1。我々は再びシャッフルを繰り返すようにしている場合、
その結果は次のようになります。C1、H5、S3、J2、D13。

説明を入力します。

各入力ファイルには、1つのテストケースが含まれています。各場合について、最初の行は、繰り返し回数がKの整数正の(<= 20)を含みます。そして、次の行は、与えられた順序が含まれています。行のすべての数字は、スペースで区切られます。

出力説明:

各テストケースのために、一列にシャッフル結果を印刷します。すべてのカードは、スペースで区切られ、行の最後に余分なスペースがあってはなりません。

入力例:

2 
36 52 37 38 3 39 40 53 54 41 11 12 13 42 43 44 2 4 23 24 25 26 27 6 7 8 48 49 50 51 9 10 14 15 16 5 17 18 19 1 20 21 22 28 29 30 31 32 33 34 35 45 46 47

出力例:

S7 C11 C10 C12 S1 H7 H8 H9 D8 D9 S11 S12 S13 D10 D11 D12 S3 S4 S6 S10 H1 H2 C13 D2 D3 D4 H6 H3 D13 J1 J2 C1 C2 C3 C4 D1 S5 H5 H11 H12 C6 C7 C8 C9 S2 S8 S9 H10 D5 D6 D7 H4 H13 C5

 

分析:[4,2,5,3,1]は改造を示した後、最初のカードが3枚目のカードは、第五の位置を入れ、第2のカードは、第2の位置に配置され、第4の位置に配置しました。、コードの主な使用を言っ。

//構築物の構造とソート

#include <アルゴリズム>
構造体ノード{
    int型のID、
    文字列名;
} C [55]、TMP; //生成構造

CMP BOOL(ノードXと、ノード&Y CONST CONST){
    リターンx.id <y.id; //昇順
}
ソート(1 + C、C + + 1 54は、CMPである); //ソート構造

ACコード:

#include<algorithm>
#include<iostream>
#include<sstream>
using namespace std;
struct node{
	int id;
	string name;
}c[55],tmp;
bool cmp(const node &x, const node &y) {
	return x.id < y.id;
}
void init(){	
	for(int i=1;i<=13;i++){
		stringstream ss;//int类型转string类型
		string s = "S";
		ss<<i;
		ss>>c[i].name;
		c[i].name = s + c[i].name;
		c[i].id=i;
	}
	for(int i=14;i<=26;i++){
		stringstream ss;
		string s = "H";
		ss<<i-13;
		ss>>c[i].name;
		c[i].name = s + c[i].name;
		c[i].id=i;
	}
	for(int i=27;i<=39;i++){
		stringstream ss;
		string s = "C";
		ss<<i-26;
		ss>>c[i].name;
		c[i].name = s + c[i].name;
		c[i].id=i;
	}
	for(int i=40;i<=52;i++){
		stringstream ss;
		string s = "D";
		ss<<i-39;
		ss>>c[i].name;
		c[i].name = s + c[i].name;
		c[i].id=i;
	}
	stringstream ss;
	string s = "J";
	ss<<1;
	ss>>c[53].name;
	c[53].name = s + c[53].name;
	c[53].id=53;

	stringstream ss1;
	ss1<<2;
	ss1>>c[54].name;
	c[54].name = s + c[54].name;
	c[54].id=54;
}
void print(){
	for(int i=1;i<=54;i++){
		cout<<c[i].name<<" ";
	}	
}

int main(){
	
	init();
	int n,x[55];
	cin>>n;
	for(int i=1;i<=54;i++){
		cin>>x[i];
	}
	for(int i=1;i<=n;i++){
		for(int j=1;j<=54;j++){
			c[j].id = x[j];
		}
		sort(c+1,c+54+1,cmp);
	}
	print();
	return 0;
} 

 

公開された67元の記事 ウォン称賛14 ビュー10000 +

おすすめ

転載: blog.csdn.net/weixin_38603360/article/details/97036259