IT技术博客大学习 共学习 共进步
全部 移动开发 后端 数据库 AI 算法 安全 DevOps 前端 设计 开发者

UyHiP趣题:拉灯游戏总有解吗?

Matrix67: My Blog 2011-06-22 00:17:45 累计浏览 2,646 次
本机暂存

     某公司有 n 间办公室。每间办公室都有一盏灯,拉动它的开关即可改变电灯的状态。某些办公室之间存在“业务相关”的关系(这是一个对称的关系)。一个办公室可以和 0 到任意多个办公室相关。愚人节那天,有人在大家上班之前偷偷对办公室的电灯开关做了手脚:拉动任何一个办公室的电灯开关,都会同时改变该办公室以及所有相关办公室的电灯状态。初始时,所有灯都是关着的。证明:等到大家来上班后,总能用有限次的开关,最终把所有办公室的灯都打开。

     证明:对 n 施归纳。只有一间办公室时,结论显然成立。下面假设我们已经有办法让任意 n-1 个办公室的灯全部打开。如果把其中某 n-1 个办公室的灯全打开后,发现剩下的那个办公室的灯正好也亮了,问题就解决了。否则,我们就相当于有办法同时改变任意 n-1 个办公室的电灯状态(并且不对剩下的那个办公室造成影响)。

     考虑这样的操作:先改变除了办公室 A 以外的所有办公室的电灯状态,再改变除办公室 B 以外的所有办公室的电灯状态。这样下来的结果就是,只有办公室 A 、 B 的电灯状态真的被改变了,其它办公室的电灯状态又都变了回去。也就是说,我们可以同时改变任意两个办公室的电灯状态了(并且不影响其它办公室)。

     如果 n 是偶数,两个两个地把它们的灯打开,问题直接就解决了。麻烦的就是,如果 n 是奇数的话,该怎么办呢?要是有一个办公室正好有偶数个相关的办公室就好了,这样的话就可以先拉下它的开关,剩下灯没亮的办公室正好偶数个,问题也就解决了。下面我们就证明,如果 n 是奇数,那么一定存在一个办公室,它正好有偶数个相关办公室。

     注意到,把所有办公室的相关办公室数加起来,结果一定是一个偶数(因为每个相关关系都被算了两次)。但是,我们一共有奇数个办公室,如果它们各自的相关办公室数目都是奇数,加起来也还是个奇数。因此,至少有一间办公室,它有偶数个相关办公室。这就完成了整个证明过程的最后一环。

    问题来源:http://www.brand.site.co.il/riddles/201103q.html

同分类推荐文章

  1. 对基本有序的序列排序算法 (2026-06-11 17:46:49)
  2. Four Levels Of Customer Understanding (2026-05-22 21:00:00)
  3. 除法的意义 (2026-04-12 20:52:17)

查看更多 算法 文章 →

建议继续学习

  1. 关于memcache分布式一致性hash (累计阅读 11,817)
  2. 淘宝搜索:定向抓取网页技术漫谈 (累计阅读 9,529)
  3. PHP与递归Recursion (累计阅读 9,244)
  4. 你是那10%可以实现二分查找算法的程序员吗? (累计阅读 7,849)
  5. Hacker News 排名算法工作原理 (累计阅读 7,522)
  6. 神秘常量复出!用0x077CB531计算末尾0的个数 (累计阅读 6,561)
  7. 一些有意思的算法代码 (累计阅读 5,152)
  8. geohash:用字符串实现附近地点搜索 (累计阅读 5,138)
  9. 漫话中文分词算法 (累计阅读 4,977)
  10. 用户成长体系漫谈 (累计阅读 4,779)