PTA——洗牌
程序:
#include<stdio.h>
int main() {
int i,n,*result;
scanf("%d",&n);
int shuffle[],card1[],card2[];
result = n%==?card1:card2;
for(i=; i<; i++) {
scanf("%d",&shuffle[i]);
}
//初始化
for(i=; i<; i++) {
card1[i] = i;
}
//洗牌
/*
while(n) {
if(n%2==1) {
for(i=0; i<54; i++) {
card2[shuffle[i]-1] = card1[i];
}
} else {
for(i=0; i<54; i++) {
card1[shuffle[i]-1] = card2[i];
}
}
n--;
}
*/
while(n){
for(i=; i<; i++){
card2[shuffle[i]-] = card1[i];
}
n--;
if(n==){
break;
}
for(i=; i<; i++){
card1[shuffle[i]-] = card2[i];
}
n--;
} for(i=; i<; i++) {
if(result[i]/==) {
printf("%c%d",'S',result[i]%+);
} else if(result[i]/==) {
printf("%c%d",'H',result[i]%+);
} else if(result[i]/==) {
printf("%c%d",'C',result[i]%+);
} else if(result[i]/==) {
printf("%c%d",'D',result[i]%+);
} else {
printf("%c%d",'J',result[i]%+);
}
if(i<) {
printf(" ");
}
}
}
分析:
此题用到的知识点有
1、数组:不定义字符数组,而是在输出时做判断,提高了程序效率
2、指针:最终输出的结果与洗牌次数有关,先定义一个指针,后期直接访问结果数组即可,避免了判断操作
3、三元运算符:节省代码量
4、循环语句:两个数组交替存储每次洗牌结果(注释中的程序是我一开始写的,有逻辑错误),不论最后洗多少次,都是1-2-1-2交替
PTA——洗牌的更多相关文章
- [LeetCode] Shuffle an Array 数组洗牌
Shuffle a set of numbers without duplicates. Example: // Init an array with set 1, 2, and 3. int[] n ...
- 洗牌算法Fisher_Yates原理
1.算法 http://en.wikipedia.org/wiki/Fisher%E2%80%93Yates_shuffle 简单的原理如下图所示: 2.原理 总结下,洗牌算法Fisher_Yates ...
- C# 洗牌算法
最近悟出来一个道理,在这儿分享给大家:学历代表你的过去,能力代表你的现在,学习代表你的将来. 十年河东十年河西,莫欺少年穷 学无止境,精益求精 C#洗牌算法如下: class Program { ...
- [转]完美洗牌(Perfect Shuffle)问题
[转]原博文地址:https://github.com/julycoding/The-Art-Of-Programming-By-July/blob/master/ebook/zh/02.09.md ...
- PAT自测_打印沙漏、素数对猜想、数组元素循环右移、数字加倍重排、机器洗牌
-自测1. 打印沙漏() 本题要求你写个程序把给定的符号打印成沙漏的形状.例如给定17个“*”,要求按下列格式打印 ***** *** * *** ***** 所谓“沙漏形状”,是指每行输出奇数个符号 ...
- Js实现简单的洗牌
基础篇 洗牌采用的是,每一张牌,与后面随机一张牌来交换位置. 扑克牌采用编码制(如,0代表红桃A,依次类推)为了编码方便,扑克牌不含大小王,故52张. 一.扑克牌的了解 扑克(英文:Poker) 一副 ...
- Java集合List模拟“洗牌”操作
Collection工具类为操作List集合提供了几个有用的方法: reverse().shuffle().sort().swap().rotate(). 小例子: 使用shuffle(),方法模拟洗 ...
- Baraja演示15种不同的洗牌特效
实例演示 下载地址 实例代码 实例演示 实例代码 <div class="container"> <header class="clearfix&q ...
- [CareerCup] 18.2 Shuffle Cards 洗牌
18.2 Write a method to shuffle a deck of cards. It must be a perfect shuffle—in other words, each of ...
随机推荐
- WinForm中预览Office文件
WinForm预览Office文档 使用WinForm, WPF, Office组件 原理:使用Office COM组件将Word,Excel转换为XPS文档, 将WPF的DocumentViewer ...
- 使用flask搭建服务端
---恢复内容开始--- 本文默认采用python3 一.虚拟环境 创建环境 mkdir myproject cd myproject python3 -m venv venv //Windows平台 ...
- 使用 R 语言挖掘 QQ 群聊天记录
1.获取数据 从 QQ 消息管理器中导出消息记录,保存的文本类型选择 txt 文件.这里获取的是某群从 2016-04-18 到 2016-05-07 期间的聊天记录,记录样本如下所示. 消息记录(此 ...
- ASM ClassReader failed to parse class file - probably due to a new Java class file version that isn't supported yet………
在照着这里例子学习ssm时,在部署阶段遇到了这个问题“ASM ClassReader failed to parse class file - probably due to a new Java c ...
- 服务列表中找不到mysql
服务列表中找不到mysql - 解决办法 1.在开始处输入cmd,找到cmd选择以管理员身份运行(必须以管理员运行,直接win+r打开无效) 2.进入到MySQL安装目录的bin目录 3.执行mysq ...
- MySQL存储过程入门
MySQL存储过程入门 在本教程中,我们将逐步介绍如何使用CREATE PROCEDURE语句开发第一个MySQL存储过程. 另外,我们将向您展示如何从SQL语句调用存储过程. 编写第一个MySQL存 ...
- yansir的原生js库
var yansir = { //isInteger为true返回的是四舍五入后的整数 num:function(min,max,isInteger){ if(isInteger){ return M ...
- Spring boot连接MongoDB集群
主要问题是:MongoDB集群分为复制集(replicaSet)与分片集(shardingSet),那么如何去连接这两种集群: 参考官方文档,我使用了最通用的方法:通过构造connection str ...
- 使用Metasploit渗透攻击windows系统(一)
攻击机:kaili ip:192.168.80.157 目标机:win7 IP:192.168.80.158 这里用两种方法去创建meterpreter会话: 1)利用kali中的msfvenom生成 ...
- ELK+MySQL出现大量重复记录问题处理
一.使用Logstash使用jdbc从MySQL读取数据操作 1.1 安装jdbc插件 jdbc默认已安装,如果没安装使用logstash-plugin安装即可(logstash-plugin在log ...