原题如下:

有 n 盏灯,编号 1~n(0

比如输入:10 2 输出最后亮灯的编号:1,3,5,7,9

注意:使用循环语句实现。

java和c都可以实现,下面代码将使用java来实现

首先这题有两种解题思路:

可以通过定义一个boolean数组判断灯是否打开,然后模拟整个开关的流程

可以先算出一个灯被开关的次数,根据开关的次数推断出这个灯现在的开关状态

第一种:

首先我们要先输入两个需要变量,这个两种方法是一样的:

Scanner sc = new Scanner(System.in);

System.out.println("输入灯数:(0

int lampNum = sc.nextInt();

System.out.println("输入人的数量:");

int manNum = sc.nextInt();

然后定义一个boolean数组然后初始化:

boolean[] lamp_flag = new boolean[lampNum];//使用boolean数组来判断灯的开关

for(int i=0;i

lamp_flag[i] = true;

}

接下来就是模拟整个关灯开灯的流程:

for(int i=1;i<=manNum;++i) {

if(i==1) {

continue; //因为之前初始化就把所有灯打开了,所以第一个跳过就可以了

}

for(int j=1;j<=lampNum;++j) {

if(j%i==0) {

if(lamp_flag[j-1]==true) {

lamp_flag[j-1]=false;

}else { //如果灯是关的就打开,如果是开的就关闭

lamp_flag[j-1]=true;

}

}

}

}

最后输出:

for(int i=0;i

if(lamp_flag[i] == true) {

System.out.print((i+1)+" ");

}

}

第二种:

相比第一种方法模拟整个流程第二种方法就要简单很多:

for(int i=1;i<=lampNum;i++) {

int count=0;//count用来统计一个灯开关的次数

for(int j=1;j<=manNum;j++){

if(i%j==0){//灯是人数的倍数即灯被按下一次

count++;

}

}

if(count%2==1){//灯原始状态为熄灭,因此灯泡被按下单数次即灯泡是打开的

System.out.printf("%d ",i);

}

}

最后本人才疏学浅,如果发现有错误或者有不同的,更优的算法,请在评论指出万分感谢

本文作者为 mowang ,转载请注明

java开灯问题_算法题-开灯问题相关推荐

  1. java猴子分桃_算法——猴子分桃

    想做些有关"算法"的练习题,在网上无意间看到了一道很经典的算法题--猴子分桃,于是百度了一下,才发现这道题的相关文档很多很多,但最多的也就是使用C++或者Java来解决这道题,而自 ...

  2. java数组排列组合_java算法题--递归求数组中数字排列组合问题

    java算法题–递归求数组中数字排列组合问题 题目:有一个数组{1,2,3},输出数组中数字的所有可能组合: 比如:123.132.213- 解题思路 通过递归不停的交换数组中的两个数(当然,肯定是有 ...

  3. Java知识汇总网站,算法题

    Jetbrain 语雀小册 Oracle java api 码辣架构 一亩三分地 廖雪峰Git Road To Coding bugstack 虫洞栈 C语言中文网 基本情報技術者試験ドットコム 情報 ...

  4. pat根据中序遍历和先序遍历_算法题399:从前序与中序遍历序列构造二叉树

    (给算法爱好者加星标,修炼编程内功) 来源: 数据结构和算法-山大王wld 问题描述 今天我们就不做关于双指针的了,我们爬到树上玩会儿,做一道关于二叉树的题.今天的题就一句话,根据一棵树的前序遍历与中 ...

  5. 100个灯泡python编程_算法题:一个圆环上有100个灯泡,灯泡有打...

    算法题:一个圆环上有100个灯泡,灯泡有打开关闭两种状态,灯泡状态随机,按一个灯泡,相邻两个灯泡的状态也会改变. eg: ' 暗 - 亮 - 暗 ' 按中间灯泡 ,变化为 ' 亮 - 暗 - 亮 '. ...

  6. java开闭原则_什么是开闭原则?如何实现开闭原则

    2015-04-13 06:30:01 阅读( 137 ) 开闭原则的解释就是:软件实体应当对扩展开放,对修改关闭,也就是:软件系统中包含的各种组件,例如模块(Modules).类(Classes)以 ...

  7. 华为服务器故障灯不开机_华为手机开不了机指示灯亮,怎么办

    展开全部 解决方法: 1.检查手32313133353236313431303231363533e78988e69d8331333365646263机电池是否还有电 先把手机连接充电器进行充电20分钟 ...

  8. 华为服务器故障灯不开机_华为手机开不了机指示灯亮怎么办?

    展开全部 解决方法: 1.检查手机电池是否还有电 先把手机连接充电器进行充电20分钟,然后再进行开机,排除是因62616964757a686964616fe58685e5aeb931333365633 ...

  9. java中printarray和selectsort方法_算法题(一)

    目录 1 左神部分集锦 2 Leetcode前150题 3 牛客网剑指offer 4 JavaG 5 题目中的细节处理 1 左神部分集锦 1.1 Code01_FindNumber_B_In_A 在有 ...

  10. 腾讯笔试算法题-开锁

    题目:有n 把钥匙,m 个锁,每把锁只能由一把特定的钥匙打开,其他钥匙都无法打开.一把钥匙可能可以打开多把锁,钥匙也可以重复使用. 对于任意一把锁来说,打开它的钥匙是哪一把是等概率的.但你无法事先知道 ...

最新文章

  1. 互联网协议 — HTTPS 安全的超文本传输协议
  2. jointGrid,边际的颜色和hue保持一致,添加title
  3. go语言 mysql卡死,Go语言MySQL优化
  4. sybase 事务插入时不可查询_InnoDB事务与锁
  5. Ethermint部署及框架解析
  6. 如何学STM32 —— 十年经验教你如何学习嵌入式系统
  7. C++获取CPU信息应用经验分享
  8. CodeBlocks中文乱码
  9. 数学建模 CUMCM2018年A题真题(本文由西南民族大学白白不加糖、薄荷CC糖原创)
  10. 当今最热专家凯文•凯利最新演讲精彩全记录
  11. Mac技巧|如何快速显示Mac桌面?Mac桌面快捷操作方式
  12. 离散数学 数学三大危机
  13. CPU的功能和基本组成
  14. 浅谈 ext2 文件系统的特点、优缺点以及使用场景
  15. 一个Tab切换类,求指导
  16. 欢迎查看Vue总结知识
  17. C 和 C++ 开源库的清单
  18. rime|小狼毫智能日期效果
  19. 求泛微E-COLOGY9和EM7授权文件生成器
  20. WIFI之点对点连接的方法

热门文章

  1. Vmware Workstation Pro初级使用
  2. ios开发愤怒的小鸟的Lua语言:Wax框架详解
  3. 小草与大树的一分钟演讲
  4. 记录项目中遇到的坑(二)
  5. mui实现APP中的支付宝支付
  6. 刷题集--贪吃的九头龙
  7. 在oracle中 缺失关键字,缺失关键字解决方案
  8. 帝国cms php超时,帝国CMS后台登录超时、登录错误5次限制的解决办法
  9. 抖音快手YY西瓜斗鱼花椒虎牙等直播平台实时录制
  10. 指导手册05:MapReduce编程入门.md