lintCode学习之路:电灯切换

来源:互联网 发布:overture打谱软件 编辑:程序博客网 时间:2024/04/29 23:37

电灯切换

一个房间中有 n 盏灯最初是开着的,并且墙上有 4 个开关。在对开关进行 m 次未知的操作后,你需要返回这 n 盏灯有多少种不同的状态。
假设 n 盏灯的标号为 [1, 2, 3 …, n], 4 个开关的功能如下:
1.将所有灯从开变成关,从关变成开。
2.将标号为偶数的灯从开变成关,从关变成开。
3.将标号为奇数的灯从开变成关,从关变成开。
4.将标号为 (3k + 1) 的灯从开变成关,从关变成开,k = 0, 1, 2…

解题思路:

这个题目一开始看确实有些看不大懂,按照题目要求第一反应就是程序去实现开关逻辑,但仔细一想实现起来非常困难。其实这个题目是一个很简单的分类讨论问题,按照题目要求可知灯泡的状态总共有以下几种

  • 全亮
  • 奇数亮
  • 偶数亮
  • 3k+1亮
  • 奇数亮、3k+1亮
  • 偶数亮、3k+1亮
  • 奇数亮、偶数亮、3k+1不亮
  • 全不亮

下面列出m、n所有的可能情况

n\m 1 2 3 … 1 2 2 2 2 2 3 4 4 4 3 4 7 8 8 4 7 8 8

 
以上结果有兴趣可以自行推断,代码就比较简单了,把分析的结果贴上去就行了,特别要注意n或m为0的情况

public int flipLights(int n, int m) {    if(n==0){        return 0;    }    if(m==0){        return 1;    }    if(n==1){        return 2;    }    if(n==2){        if(m==1){            return 3;        }        return 4;    }    if(m==1){        return 4;    }    if(m==2){        return 7;    }    return 8;}
阅读全文
'); })();
0 0
原创粉丝点击
热门IT博客
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 文言寓言小故事 庄子寓言故事及寓意 寓言故事600字 儿童寓言小故事 有趣寓言故事 简短的寓言故事 好的寓言故事 100字寓言故事 幼儿寓言小故事 出自庄子的寓言故事 西方寓言故事 龟兔赛跑寓言故事 英语寓言短文 童话寓言作文 古代寓言故事成语 古代寓言故事及寓意 神话寓言故事的成语 列子寓言故事 成语寓言故事 寓言故事改编 童话和寓言的区别 寓言故事狼来了 寓言故事题目 寓言故事名字 三分钟寓言故事 寓言故事续写 寓言故事动画 简单的寓言故事 狼来了寓言故事 关于龙的寓言故事 柏拉图洞穴寓言 寓言故事的四字成语 寓言故事 mp3 出自寓言故事的成语有哪些 感恩的寓言故事 文言文寓言故事 寓言故事简笔画 丑小鸭寓言故事 寓言故事文言文 有什么寓言故事 寓言故事英语版