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 ...
随机推荐
- Java设计模式之单例设计模式 入门实例
一.基础概念 (1).单例设计模式:保证一个类在内存中的对象唯一性. (2).应用场景:数据都存储在配置文件的对象中,多个程序对同一个配置文件的对象进行操作.一个程序要基于另一个程序操作后的结果进行操 ...
- HDU6342-2018ACM暑假多校联合训练4-1011-Problem K. Expression in Memories
Problem K. Expression in Memories Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 262144/262 ...
- 【SSO单点系列】(4):CAS4.0 SERVER登录后用户信息的返回
接着上一篇,在上一篇中我们描述了怎么在CAS SERVER登录页上添加验证码,并进行登录.一旦CAS SERVER验证成功后,我们就会跳转到客户端中去.跳转到客户端去后,大家想一想,客户端总要获取用户 ...
- Kafka,Mq,Redis作为消息队列有何差异?
Kafka作为新一代的消息系统,mq是比较成熟消息系统,而redis也可以发布订阅,那么这三者有何异同? RabbitMQ 是使用Erlang编写的一个开源的消息队列,本身支持很多的协议:AMQP,X ...
- C#实现WebSocket协议客户端和服务器websocket sharp组件实例解析
看到这篇文章的题目,估计很多人都会问,这个组件是不是有些显的无聊了,说到web通信,很多人都会想到ASP.NET SignalR,或者Nodejs等等,实现web的网络实时通讯.有关于web实时通信的 ...
- 洛谷P2800 又上锁妖塔
放题解 题目传送门 放代码
- Qt 学习之路 2(52):使用拖放
Qt 学习之路 2(52):使用拖放 豆子 2013年5月21日 Qt 学习之路 2 17条评论 拖放(Drag and Drop),通常会简称为 DnD,是现代软件开发中必不可少的一项技术.它提供了 ...
- ASP.NET后台取html控件值方式
1.Request.Form[“cbName”]: 可以在后台取到所有为name 为的控件的value值 2.可以通过 把html控件的值付给HiddenField,然后后台调用 3.就是自定义属性 ...
- pyc和pycodeobject
Python是一个先编译再解释的语言. 执行过程:先寻找pyc文件,找到则载入,没找到则把编译的结果保存在pycodeobject中,运行结束则写到pyc文件中
- LeetCode记录之28——Implement strStr()
Implement strStr(). Returns the index of the first occurrence of needle in haystack, or -1 if needle ...