比较复杂的循环分析
例:赢球票

某机构举办球票大奖赛。获奖选手有机会赢得若干张球票。主持人拿出 N 张卡片(上面写着 1~N 的数字),打乱顺序,排成一个圆圈。你可以从任意一张卡片开始顺时针数数: 1,2,3.....
如果数到的数字刚好和卡片上的数字相同,则把该卡片收入囊中,从下一个卡片重新数数。直到再无法收获任何卡片,游戏结束。囊中卡片数字的和就是赢得球票的张数。
比如卡片排列是:1 2 3
我们从1号卡开始数,就把1号卡拿走。再从2号卡开始,但数的数字无法与卡片对上,很快数字越来越大,不可能再拿走卡片了。因此这次我们只赢得了1张球票。还不算太坏!如果我们开始就傻傻地从2或3号卡片数起,那就一张卡片都拿不到了。
如果运气好,卡片排列是 2 1 3
那我们可以顺利拿到所有的卡片!
本题的目标就是:已知顺时针卡片序列。随便你从哪里开始数,求最多能赢多少张球票(就是收入囊中的卡片数字之和)

分析:
文字较多,提炼一下:
已知顺时针序列,可从任意一张卡片开始,从1开始读,若读的数和卡片数相同,就赢。

方法:枚举从所有的卡片开始的情况,求出max

循环结束条件:
读的数count>所有卡片的数

外层循环:卡片i 0~n-1(从每张卡片开始)
内层循环:从1开始读循环遍历每张卡片,直至卡片没或者读的数大于所有的没读过卡片
注意:内层循环中:卡片,读数都++,读过的卡片置为-1,不在遍历
由于是环状的遍历,当前的卡片需要对n取余

package 赢球票;import java.util.Scanner;public class Main {public static int n;public static int num[];public static void main(String[] args) {// TODO Auto-generated method stubScanner in=new Scanner(System.in);n=in.nextInt();num=new int[n];for(int i=0;i<n;i++){num[i]=in.nextInt();}System.out.println(getResult());}public static int getResult(){int max=0;for(int i=0;i<n;i++){//从第i个卡片开始int temp[]=new int[n];for(int k=0;k<n;k++){temp[k]=num[k];}int sum=0;int count=1;int start=i;while(true){boolean judge=true;//判断数组中存在比count大的元素,若存在,则count能数到,否则count永远数不到比自己小的元素for(int k=0;k<n;k++){if(temp[k]>=count){judge=false;break;}}if(judge) break;//count太大了,数组中不存在比count大的元素int j=start%n;if(temp[j]==count) {sum+=count;temp[j]=-1;//读到过了count=1;//重新从1开始读}else{count++;//读数增1}start++;//卡片增1}max=Math.max(max, sum);}return max;}}

枚举--赢球票(蓝桥杯)相关推荐

  1. 1229. 日期问题 Java题解 (枚举) 【第八届蓝桥杯省赛C++B组,JAVA B组】

    输入样例: 02/03/04 输出样例: 2002-03-04 2004-02-03 2004-03-02 解题思路: 可以顺着题意将三个数所有可能组成的情况枚举出来,并判断是否为合法的日期,将符合条 ...

  2. 备战蓝桥杯—枚举——[USACO Nov08]成交

    农夫 John 余下了 m 批干草无法处理,他准备要开一个拍卖会去出售他的干草.现在有 n 个顾客,每个顾客的报价是 ai​.现在 John 要确定一个单价,所有报价大于等于单价的顾客将会买到 1批干 ...

  3. 蓝桥杯python省赛冲刺篇2——常用算法的详细解析及对应蓝桥杯真题:打表模拟法、递推递归法、枚举法、贪心算法、差分与前缀和

    注意:加了题目链接 目录 注意:加了题目链接 一.打表模拟法 介绍 1. 算式问题 题目描述 解析与代码演示 2. 求值 题目描述 解析与代码演示 3. 既约分数 题目描述 解析与代码演示 4. 天干 ...

  4. 【第十三届蓝桥杯省赛B组】统计子矩阵 (枚举前缀和+双指针)

    AcWing 4405. 统计子矩阵 来源:第十三届蓝桥杯省赛C++B组 给定一个 N×MN×M 的矩阵 AA,请你统计有多少个子矩阵 (最小 1×11×1,最大 N×MN×M) 满足子矩阵中所有数的 ...

  5. 备战蓝桥杯-枚举、排序、模拟专项练习详解(含有多道蓝桥杯原题)

    枚举.模拟与排序 蓝桥杯所有专项练习 蓝桥杯原题: 连号区间数 小明这些天一直在思考这样一个奇怪而有趣的问题: 在 1∼N1∼N 的某个排列中有多少个连号区间呢? 这里所说的连号区间的定义是: 如果区 ...

  6. 2022蓝桥杯学习——4.枚举、模拟与排序

    一.枚举 蓝桥杯真题 1.连号区间 题目描述 小明这些天一直在思考这样一个奇怪而有趣的问题: 在 1∼N 的某个排列中有多少个连号区间呢? 这里所说的连号区间的定义是: 如果区间 [L,R] 里的所有 ...

  7. 蓝桥杯2015决赛-方格填数-枚举 or dfs

    题目描述 在2行5列的格子中填入1到10的数字. 要求:相邻的格子中的数,右边的大于左边的,下边的大于上边的. 如下图所示的2种,就是合格的填法. 请你计算一共有多少种可能的方案. 输出 请输出该整数 ...

  8. 【蓝桥杯】【入门题】【算法提高VIP】1481:剪刀石头布

    题目 1481:剪刀石头布 蓝桥杯刷题群已成立,微信后台回复[蓝桥杯],即可进入. 如果加入了之前的社群不需要重复加入. 时间限制: 1Sec 内存限制: 128MB 1. 题目描述 编写程序实现&q ...

  9. 2016年 第7届 蓝桥杯 Java B组 省赛解析及总结

    蓝桥杯 Java B组 省赛决赛 真题详解及小结汇总[2013年(第4届)~2021年(第12届)] 第11届 蓝桥杯-第1.2次模拟(软件类)真题-(2020年3月.4月)-官方讲解视频 说明:部分 ...

最新文章

  1. linux学习笔记四:安装lsusb
  2. 【跃迁之路】【545天】程序员高效学习方法论探索系列(实验阶段302-2018.08.04)...
  3. .重要开源协定的比较以及区别
  4. 【完结】如何学习AutoML在模型优化中的应用,这12篇文章可以作为一个参考
  5. 基础才是重中之重~.net中的显式事务与隐式事务
  6. python报错:TypeError: 'str' object is not callable
  7. Qt网络编程之实例一GET方式
  8. 如果你还不了解GBDT,不妨看看这篇文章
  9. 手机相机里面的m_传玉晶光担任新款iphone后置相机广角、超广角镜头主要供应商...
  10. 【Kafka】消息超过最大值限制max.request.size
  11. java怎么返回上一部,如何返回数据给上一个活动
  12. android 图片设置圆角
  13. 烂泥:nagios监控单网卡双IP
  14. (原创)十大危险cmd命令代码总结
  15. 实现华为多屏协同--非华为电脑下载12.0.1.20华为电脑管家
  16. 计算机未来职业人生规划目标与行动措施,计算机职业规划书1500字
  17. 软件开发工程师证书有用吗_java软件工程师证书有用吗?
  18. android libyuv库的使用
  19. 《车间调度及其遗传算法》学习——前言
  20. 计算机信息安全攻防大赛,计算机学院举办校第六届网络攻防大赛

热门文章

  1. Failed to configure a DataSource: 'url' attribute is not specified and no embedd
  2. ES6中的数组reduce()方法详解
  3. 基于SSM框架的ERP生产管理系统源码 这是一个ERP生产管理系统
  4. 数据分析 第七篇:相关分析
  5. 2021-04-29 鹅厂等我!毕竟我充了辣么多QQ币~
  6. 将你的⭐Hexo博客⭐部署到微信小程序上--易操作
  7. 关键词采集工具可以帮助我们做那些方面的工作
  8. HOJ 题目分类 by wywcgs
  9. python+百度ai平台实现人脸识别
  10. vcard php,php vcard显示为纯文本