看了半天发现是在洗牌。。。。。
看清楚题目,给出的位置是把当前位置的元素放到那个位置去。应该就没事了。
#include <iostream>
#include <string>
#define SIZE 55
using namespace std;
string Orig[SIZE], Relt[SIZE];
int shuf[SIZE];
int n;
string int2str(int n) {
string s;
if (n > 0 && n < 10) {
s.push_back('0' + n);
}
else {
s.push_back('1');
s.push_back('0' + n % 10);
}
return s;
}
void Init() {
int c = 1;
for (int i = 1; i <= 13; i++,c++) {
Orig[c] = "S";
Orig[c] += int2str(i);
}
for (int i = 1; i <= 13; i++, c++) {
Orig[c] = "H";
Orig[c] += int2str(i);
}
for (int i = 1; i <= 13; i++, c++) {
Orig[c] = "C";
Orig[c] += int2str(i);
}
for (int i = 1; i <= 13; i++, c++) {
Orig[c] = "D";
Orig[c] += int2str(i);
}
Orig[c++] = "J1";
Orig[c++] = "J2";
}
void shuff() {
for (int i = 0; i < n; i++) {
for (int j = 1; j < SIZE; j++) {
Relt[shuf[j]] = Orig[j];
}
for (int j = 1; j < SIZE; j++) {
Orig[j] = Relt[j];
}
}
}
int main() {
cin >> n;
for (int i = 1; i < SIZE; i++) {
cin >> shuf[i];
// cout << i << " " << shuf[i] << endl;
}
Init();
shuff();
for (int i = 1; i < SIZE -1; i++) {
cout << Relt[i] << " ";
}
cout << Relt[SIZE - 1] << endl;
system("pause");
return 0;
}