PAT 1042 Shuffling Machine
5233 단어 mac
#include <cstdio>
#include <cstdlib>
#include <vector>
using namespace std;
char tbl[5] = {'S', 'H', 'C', 'D', 'J'};
void shuffle(vector<char> &card, vector<char> &rnd) {
int rlen= rnd.size();
vector<char> tmp(card.size(), 0);
for (int i=0; i<rlen; i++) {
tmp[rnd[i]] = card[i];
}
card = tmp;
}
void print_card(char card) {
printf("%c%d", tbl[card/13], card % 13 + 1);
}
int main() {
int times = 0, r = 0;
vector<char> rnd(54, 0);
vector<char> card(54, 0);
for (int i=0; i<54; i++) {
card[i] = i;
}
scanf("%d", ×);
for (int i=0; i<54; i++) {
scanf("%d", &r);
rnd[i] = r - 1;
}
for (int i=0; i<times; i++) {
shuffle(card, rnd);
}
print_card(card[0]);
for (int i=1; i<54; i++) {
printf(" ");
print_card(card[i]);
}
return 0;
}
처음에 복잡 하 게 생각 했 습 니 다. 알고리즘 서론 에서 언급 한 것 처럼 요소 교환 을 해 야 한다 고 생각 했 습 니 다. 그곳 은 랜 덤 수열 이 일정한 범위 내 에서 유일 하 다 고 보장 할 수 없 기 때 문 입 니 다.그래서 배열 을 옮 겨 다 닐 때 발생 하 는 임 의 수가 얼마 인지 현재 요소 와 아래 표 시 를 현재 임 의 수 와 일치 하 는 요 소 를 바 꿉 니 다.하지만 수열 은 중복 되 지 않 는 다 고 했 으 니 원 소 를 대응 하 는 위치 에 놓 으 면 된다.물론 프로그램 에 서 는 한 번 의 shuffle 을 하나의 함수 로 쓰 지 않 아 도 됩 니 다. 그러면 반복 적 으로 vector 를 만 드 는 것 을 피 할 수 있 습 니 다. 임시 vector 를 사용 하면 요 소 를 복사 하 는 대신 swap 를 몇 번 더 실행 할 수 있 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
여러 모니터와 Mac의 화면 공유 🖥🖥 ▶️🖥🖥MacOS는 공식 원격 데스크톱 앱인 "화면 공유"를 제공하지만 '다중 모니터 대 다중 모니터' 원격 액세스를 지원하지 않습니다. 하나는 첫 번째 모니터에 해당하고 다른 하나는 두 번째 모니터에 해당하는 2개의 세션...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.