算法 11.纸牌游戏
算法 11.纸牌游戏
- 问题描述
- 输入
- 输出
- 样例数据
- 输入(1)
- 输出(1)
- 输入(2)
- 输出(2)
- 代码
问题描述
输入
第一行一个数 n( 1 ≤ n ≤ 200000 1 \leq n \leq 200000 1≤n≤200000) 。
第二行 n 个数,表示小张手中的牌。
第三行 n 个数,表示牌堆,数组从左向右的顺序表示牌堆自顶向下的顺序。
输出
一个整数,表示最少执行的操作数。
样例数据
输入(1)
3
0 2 0
3 0 1
输出(1)
2
输入(2)
3
0 2 0
1 0 3
输出(2)
4
代码
没啥好说的,可能需要看着注释仔细想想
#include <stdio.h>//这是第十一题 卡牌游戏
long int hand_card[200002],deck[200002],position[200002]={};//首先我们创立三个新的数组,分别用来存储手牌,牌堆,以及记录每张牌的位置的数组 int main(){long int n;int m=1;scanf("%ld",&n);long int p=0; for(long int i=1;i<=n;i++)//首先,我们判断1是不是在手牌中 {scanf("%ld",&hand_card[i]);position[hand_card[i]]=0;//如果这张牌在手牌中,我们就把这张牌对应的位置设置为0 if(hand_card[i]==1){m=0;} }for(long int i=1;i<=n;i++)//接下来,我们判断1是不是在牌堆之中,如果在,记录1在牌堆中的位置 {scanf("%ld",&deck[i]);position[deck[i]]=i;if(deck[i]==1){p=i;}}//printf("%ld\n",p);//检查是否成功查找1的位置 long int p1;if(m==1)//接下来,做一个特殊情况的判断,看看排队的结尾是不是1234...这种情况一 {for(p1=p;p1<=n;p1++){if(deck[p1]!=(p1-p+1)){m=0;break;}}}//printf("%d\n",m);if(m==1)//继续判断特殊情况,看看能不能在情况一的情况下继续特殊为情况一点一,这张情况下我们可以不停的抽一张放一张,直到结束 {long int p2;long int p3;p2=n-p+2;p3=n-p+1;for(long int i=p2;i<=n;i++){if((position[i])>=(i-p3)){m=0;break;}}}//printf("%d\n",m);//printf("%ld\n",p);if(m==1)//如果是情况一点一,我们只需要抽n-p次就可以了 {printf("%ld\n",p-1);}long int max=0,now;if(m==0)//接下来我们来分析普通的情况 {for(long int i=1;i<=n;i++)//首先,在这种情况之中,我们需要先把1抽到手,才可以进行后续的操作。 {position[i]=position[i]-p;}for(long int i=1;i<=n;i++){now=position[i]-i+1;//接下来,我们再看剩下的每张牌,按照每张牌的大小决定需要多少次才可以抽到他,之后打出 if(now>max){max=now;}}printf("%ld\n",max+n+p);}return 0;
}
算法 11.纸牌游戏相关推荐
- 啊哈算法之纸牌游戏小猫钓鱼
简述 本算法摘选自啊哈磊所著的<啊哈!算法>第二章第三节的题目--纸牌游戏小猫钓鱼.文中代码使用C语言编写,但是仔细看了一遍发现原书中有个细节是错误的,也就是说按照算法题目意思,原书中作者 ...
- 《啊哈算法》纸牌游戏---小猫钓鱼
扑克游戏: 将一副扑克牌平均分成两份,每人拿一份.小哼先拿出手中的第一张扑克牌放在桌上,然后小哈也拿出手中的第一张放在桌上,就这样两人交替出牌. 出牌时,若某人打出的牌与桌面上的某张牌面相同,即将两张 ...
- 纸牌游戏洗牌发牌排序算法设计
纸牌游戏洗牌发牌排序算法设计 本文提供纸牌游戏设计制作的基础部分,即洗牌,发牌,牌张排序排列显示的算法. 以及游戏开始时间使用时间的显示.我是用简单的C语言编译器MySpringC在安卓手机上编写的. ...
- python10点半纸牌游戏_扑克11点游戏(python代码)
扑克11点游戏(python代码)import random'''纸牌11点游戏 规则: 1. 3个人参与,默认先给用户发一张牌,其中 J.Q.K.小王.大王代表的值为0.5,其他就是则就是当前的牌面 ...
- 算法学习 2.3纸牌游戏——小猫钓鱼
这是一章对前面的队列,栈的操作进行运用的一个实例.玩家A和玩家B玩纸牌游戏小猫钓鱼,游戏规则如下: 一副纸牌,平均分成两份,每人拿一份(这里就用数字代替了). 玩家A先拿出一张纸牌放在桌子上,玩家B再 ...
- 纸牌游戏——《啊哈算法》第二章第三节
// 2.3节 纸牌游戏#include<stdio.h> struct queue //实现队列 {int data[1000];//存储队列中的元素int head;//存储队头int ...
- 24点游戏 java实现_java实现24点纸牌游戏
本文题目为大家分享了java实现24点纸牌游戏的具体代码,供大家参考,具体内容如下 题目 24点游戏是经典的纸牌益智游戏. 常见游戏规则: 从扑克中每次取出4张牌.使用加减乘除,第一个能得出24者为赢 ...
- 24点纸牌游戏,c语言实现
(此程序参考https://blog.csdn.net/weixin_41258179/article/details/82901853,并做出一些改进) 一.题目要求: 24点游戏规则: 从扑克中每 ...
- 麻省理工最新研究:血虐人类玩家的RL智能体,在纸牌游戏中从最强对手变成“猪队友”...
来源:AI科技评论 本文约3700字,建议阅读10分钟 真实世界中采用强化学习智能体,人类对AI的感知在未来AI设计和开发中需要得到更多的考虑. 诸如<星际争霸>等复杂游戏,是AI模拟现实 ...
最新文章
- 为什么中国程序员工作不轻松,加班多?
- 【C 语言】文件操作 ( 读取文件中的结构体数组 | feof 函数使用注意事项 )
- vue-lazyload 的vue 懒加载的使用
- c语言程序课程设计问题,矩形问题-C语言程序课程设课程设计(论文).doc
- isight参数优化理论与实例详解_详解oracle数据库优化参数--cursor_sharing
- 将 改为c语言表达式,基于c语言表达式求解课程设计修改.doc
- 同名的const 成员函数
- java+mysql学生学籍后台管理系统源码
- 湖北2018年GDP同比增长7.8% 进出口增速有所回升
- oracle的sqlplus命令讲解,SQL*PLUS使用 - Oracle sqlplus命令详解_数据库技术_Linux公社-Linux系统门户网站...
- Python + ElasticSearch:轻松玩转跨越千年的两百三十万条地震数据
- Unity的PackageManager面板不能用问题
- dimm和udimm_服务器内存类型(UDIMM、RDIMM和LRDIMM)
- 【Mac版word转PPT技巧】谁说Word转PPT在Mac电脑中不能实现?
- 【卡特兰数】【递推】【高精+压位】JZOJ·WZK打雪仗
- python 读视频_Python3读取视频保存视频
- css-项目实训(招商银行)
- 微信公众号消息增加跳转链接
- 12、手机归属地查询API接口,免费好用
- javaIO异常之EOFException
热门文章
- 2010年2月微软安全公告摘要(清理专家已更新)
- multimedia教学设计计算机英语,原创:论多媒体辅助中学英语课堂教学的利与弊原稿...
- 听力特快下载中心快速导航
- 基于TF的CNN 与LSTM/GRU 的《流浪地球》影评数据分析
- python3.7 安装pip3
- ARTS Week 22
- 随州天气预报软件测试,随州天气预报15天
- 2022 万向区块链秋季黑客马拉松全球报名开启!
- 有哪些学生党必备的 App?学生党必备软件推荐,简单实用!
- 今晚8:00 | Mila实验室重磅来袭!