PAT甲级1042 Shuffling Machine:[C++题解]模拟、哈希表、洗牌机
生活随笔
收集整理的這篇文章主要介紹了
PAT甲级1042 Shuffling Machine:[C++题解]模拟、哈希表、洗牌机
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
文章目錄
- 題目分析
- 題目來源
題目分析
來源:acwing
分析:序列置換。
這里用到函數memcpy()用于數組復制,用法memcpy(dest, src, sizeof dest);
把src數組中的內容復制到dest數組中。
來源:cppreference
ac代碼
#include<bits/stdc++.h> using namespace std; const int N = 55; int q[N]; //打亂順序 int p[N]; //最終排列 int w[N]; //臨時數組void print(int x){if(x <=13) cout<<"S"<<x;else if(x<=26) cout<<"H"<<x-13;else if(x<=39) cout<<"C"<<x -26;else if(x<= 52) cout<<"D"<< x - 39;else cout<<"J"<< x - 52; } int main(){int k;cin >> k;//讀入給定的打亂順序for(int i = 1; i <= 54; i++) cin>> q[i];//第i個數放在q[i]這個位置上for(int i =1; i<= 54; i++) p[i] =i;while(k--){memcpy(w,p,sizeof w); // 復制上一輪排放的結果//第i張牌放在q[i]位置上 for(int i =1; i<= 54; i++) p[q[i]] = w[i]; }for(int i =1; i<= 54; i++){print(p[i]);if(i!= 54) cout<<" ";}}題目來源
PAT甲級1042 Shuffling Machine
https://www.acwing.com/problem/content/1528/
總結
以上是生活随笔為你收集整理的PAT甲级1042 Shuffling Machine:[C++题解]模拟、哈希表、洗牌机的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: PAT甲级1041 Be Unique
- 下一篇: PAT甲级1047 Student Li