算法 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.纸牌游戏相关推荐

  1. 啊哈算法之纸牌游戏小猫钓鱼

    简述 本算法摘选自啊哈磊所著的<啊哈!算法>第二章第三节的题目--纸牌游戏小猫钓鱼.文中代码使用C语言编写,但是仔细看了一遍发现原书中有个细节是错误的,也就是说按照算法题目意思,原书中作者 ...

  2. 《啊哈算法》纸牌游戏---小猫钓鱼

    扑克游戏: 将一副扑克牌平均分成两份,每人拿一份.小哼先拿出手中的第一张扑克牌放在桌上,然后小哈也拿出手中的第一张放在桌上,就这样两人交替出牌. 出牌时,若某人打出的牌与桌面上的某张牌面相同,即将两张 ...

  3. 纸牌游戏洗牌发牌排序算法设计

    纸牌游戏洗牌发牌排序算法设计 本文提供纸牌游戏设计制作的基础部分,即洗牌,发牌,牌张排序排列显示的算法. 以及游戏开始时间使用时间的显示.我是用简单的C语言编译器MySpringC在安卓手机上编写的. ...

  4. python10点半纸牌游戏_扑克11点游戏(python代码)

    扑克11点游戏(python代码)import random'''纸牌11点游戏 规则: 1. 3个人参与,默认先给用户发一张牌,其中 J.Q.K.小王.大王代表的值为0.5,其他就是则就是当前的牌面 ...

  5. 算法学习 2.3纸牌游戏——小猫钓鱼

    这是一章对前面的队列,栈的操作进行运用的一个实例.玩家A和玩家B玩纸牌游戏小猫钓鱼,游戏规则如下: 一副纸牌,平均分成两份,每人拿一份(这里就用数字代替了). 玩家A先拿出一张纸牌放在桌子上,玩家B再 ...

  6. 纸牌游戏——《啊哈算法》第二章第三节

    // 2.3节 纸牌游戏#include<stdio.h> struct queue //实现队列 {int data[1000];//存储队列中的元素int head;//存储队头int ...

  7. 24点游戏 java实现_java实现24点纸牌游戏

    本文题目为大家分享了java实现24点纸牌游戏的具体代码,供大家参考,具体内容如下 题目 24点游戏是经典的纸牌益智游戏. 常见游戏规则: 从扑克中每次取出4张牌.使用加减乘除,第一个能得出24者为赢 ...

  8. 24点纸牌游戏,c语言实现

    (此程序参考https://blog.csdn.net/weixin_41258179/article/details/82901853,并做出一些改进) 一.题目要求: 24点游戏规则: 从扑克中每 ...

  9. 麻省理工最新研究:血虐人类玩家的RL智能体,在纸牌游戏中从最强对手变成“猪队友”...

    来源:AI科技评论 本文约3700字,建议阅读10分钟 真实世界中采用强化学习智能体,人类对AI的感知在未来AI设计和开发中需要得到更多的考虑. 诸如<星际争霸>等复杂游戏,是AI模拟现实 ...

最新文章

  1. 为什么中国程序员工作不轻松,加班多?
  2. 【C 语言】文件操作 ( 读取文件中的结构体数组 | feof 函数使用注意事项 )
  3. vue-lazyload 的vue 懒加载的使用
  4. c语言程序课程设计问题,矩形问题-C语言程序课程设课程设计(论文).doc
  5. isight参数优化理论与实例详解_详解oracle数据库优化参数--cursor_sharing
  6. 将 改为c语言表达式,基于c语言表达式求解课程设计修改.doc
  7. 同名的const 成员函数
  8. java+mysql学生学籍后台管理系统源码
  9. 湖北2018年GDP同比增长7.8% 进出口增速有所回升
  10. oracle的sqlplus命令讲解,SQL*PLUS使用 - Oracle sqlplus命令详解_数据库技术_Linux公社-Linux系统门户网站...
  11. Python + ElasticSearch:轻松玩转跨越千年的两百三十万条地震数据
  12. Unity的PackageManager面板不能用问题
  13. dimm和udimm_服务器内存类型(UDIMM、RDIMM和LRDIMM)
  14. 【Mac版word转PPT技巧】谁说Word转PPT在Mac电脑中不能实现?
  15. 【卡特兰数】【递推】【高精+压位】JZOJ·WZK打雪仗
  16. python 读视频_Python3读取视频保存视频
  17. css-项目实训(招商银行)
  18. 微信公众号消息增加跳转链接
  19. 12、手机归属地查询API接口,免费好用
  20. javaIO异常之EOFException

热门文章

  1. 2010年2月微软安全公告摘要(清理专家已更新)
  2. multimedia教学设计计算机英语,原创:论多媒体辅助中学英语课堂教学的利与弊原稿...
  3. 听力特快下载中心快速导航
  4. 基于TF的CNN 与LSTM/GRU 的《流浪地球》影评数据分析
  5. python3.7 安装pip3
  6. ARTS Week 22
  7. 随州天气预报软件测试,随州天气预报15天
  8. 2022 万向区块链秋季黑客马拉松全球报名开启!
  9. 有哪些学生党必备的 App?学生党必备软件推荐,简单实用!
  10. 今晚8:00 | Mila实验室重磅来袭!