PAT 1042 Shuffling Machine
#include <cstdio>
#include <cstdlib>
#include <vector> using namespace std; char tbl[] = {'S', 'H', 'C', 'D', 'J'}; void shuffle(vector<char> &card, vector<char> &rnd) {
int rlen= rnd.size();
vector<char> tmp(card.size(), );
for (int i=; i<rlen; i++) {
tmp[rnd[i]] = card[i];
}
card = tmp;
} void print_card(char card) {
printf("%c%d", tbl[card/], card % + );
} int main() {
int times = , r = ;
vector<char> rnd(, );
vector<char> card(, );
for (int i=; i<; i++) {
card[i] = i;
}
scanf("%d", ×);
for (int i=; i<; i++) {
scanf("%d", &r);
rnd[i] = r - ;
}
for (int i=; i<times; i++) {
shuffle(card, rnd);
}
print_card(card[]);
for (int i=; i<; i++) {
printf(" ");
print_card(card[i]);
}
return ;
}
一开始想复杂了以为要像算法导论里面提到的那样进行元素交换,那里是因为随机数列不能保证在一定范围内唯一(如果要得到这样的数列其实也可以,就相当于已经进行了一次洗牌)所以遍历数组时产生的随机数是多少就把当前元素和下标和当前随机数一致的元素对换。不过这里已经说了数列是不重复的就直接把元素放到对应的位置上即可。当然程序里可以不把单次shuffle写成一个函数,这样可以避免反复创建vector,只要使用一个临时vector即可,多执行几次swap来代替元素拷贝。
PAT 1042 Shuffling Machine的更多相关文章
- PAT 1042. Shuffling Machine (20)
1042. Shuffling Machine (20) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHEN, Yue Shu ...
- PAT 1042 Shuffling Machine[难]
1042 Shuffling Machine (20)(20 分) Shuffling is a procedure used to randomize a deck of playing cards ...
- pat 1042 Shuffling Machine(20 分)
1042 Shuffling Machine(20 分) Shuffling is a procedure used to randomize a deck of playing cards. Bec ...
- PAT 1042 Shuffling Machine (20 分)
1042 Shuffling Machine (20 分) Shuffling is a procedure used to randomize a deck of playing cards. ...
- PAT (Advanced Level) Practice 1042 Shuffling Machine (20 分) 凌宸1642
PAT (Advanced Level) Practice 1042 Shuffling Machine (20 分) 凌宸1642 题目描述: Shuffling is a procedure us ...
- PAT 甲级 1042 Shuffling Machine (20 分)(简单题)
1042 Shuffling Machine (20 分) Shuffling is a procedure used to randomize a deck of playing cards. ...
- PAT甲级——1042 Shuffling Machine
1042 Shuffling Machine Shuffling is a procedure used to randomize a deck of playing cards. Because s ...
- 1042 Shuffling Machine (20 分)
1042 Shuffling Machine (20 分) Shuffling is a procedure used to randomize a deck of playing cards. Be ...
- PAT 甲级 1042 Shuffling Machine
https://pintia.cn/problem-sets/994805342720868352/problems/994805442671132672 Shuffling is a procedu ...
随机推荐
- 【SSO单点系列】(4):CAS4.0 SERVER登录后用户信息的返回
接着上一篇,在上一篇中我们描述了怎么在CAS SERVER登录页上添加验证码,并进行登录.一旦CAS SERVER验证成功后,我们就会跳转到客户端中去.跳转到客户端去后,大家想一想,客户端总要获取用户 ...
- ceph_osd故障检测
1. 当前monitor可以通过3种途径检测到osd离线 1) Osd自主上报 2) Osd通过投票的方式(满足一下条件之一,mon会将osd标记为down) a) ...
- 本文分享一下ehcache的使用心得,本文主要讲以广播的形式同步缓存。
本文分享一下ehcache的使用心得,本文主要讲以广播的形式同步缓存. 下面讲述主要分为两个部分,一个是配置文件,一个是Java代码. 1.准备jar包: slf4j-api-1.7.12.jar,e ...
- IK分词器原理与源码分析
原文:http://3dobe.com/archives/44/ 引言 做搜索技术的不可能不接触分词器.个人认为为什么搜索引擎无法被数据库所替代的原因主要有两点,一个是在数据量比较大的时候,搜索引擎的 ...
- json_decode转换数组过程中,结果为null处理办法,百分之百有效
json_decode这个函数是json_encode的反函数,一般传递数据的时候为了压缩数据,会将数组格式的数据转换成json格式,用到的函数就是json_encode,然后接收到数据之后再用jso ...
- 【问题记录】在执行js的时候报错:missing ) after argument list
在执行个js语句时候报错: 报错语句: js('document.querySelector("[class] [tabindex='0']:nth-child(2) span") ...
- TX2 Clone
由于给TX2配置了很多的开发环境,也修改了一些驱动,想将这些环境能够完整的迁移到一块bare TX2,于是尝试了clone的方法. 这种方法的优点是: 确保了移植的TX2 与已经配置好的环境是一致的: ...
- JUC包下CountDownLatch学习笔记
CountDownLatch的作用是能使用多个线程进来之后,且线程任务执行完毕之后,才执行, 闭锁(Latch):一种同步方法,可以延迟线程的进度直到线程到达某个终点状态.通俗的讲就是,一个闭锁相当于 ...
- mfix添加文件后重新生成configure文件
mfix给了一些程序接口,大部分时候只用修改现有程序即可满足要求,这种情况不用修改configure文件,但是如果添加了新文件就需要做一些修改. 我用了Jian Cai的程序尝试了一下编译,该学者在2 ...
- SPOJ - FAVDICE 简单期望
dp[0]=0; // rep(i,1,n) dp[i]=(double)(n-i)/n*dp[i-1]+1+(double)(i)/n*dp[i]; // (n-i)/n dp[i]= n-i / ...