灯泡问题,请教

trunxzzz 2004-02-02 08:00:47
5个灯泡,初始状态为全开,设每次只能改变3只灯泡的状态,问经过几次改变后会全灭
望高手门给一个通用一点的算法,
给出源代码谢谢

...全文
99 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
firstsee 2004-02-03
  • 打赏
  • 举报
回复
还不如在扩展一下:
有n个灯泡,每次改变k个灯泡的状态,用的次数是?
tmxsl1214 2004-02-03
  • 打赏
  • 举报
回复
?
xiaoyige886 2004-02-03
  • 打赏
  • 举报
回复
to mysword(一怒拔剑)
果然厉害,初中的时候就开始编程了
我初中时才勉强考上高中。呵呵,编程也是开始没多久的说,
另:没看到你上面已经发了,罗嗦了一大堆
xiaoyige886 2004-02-03
  • 打赏
  • 举报
回复
本题无法扩展到:n个灯泡,每次改变k个灯泡的状态。 因为有的无解:)如: n=3,k=2时

当k为偶数且( n mod k)为奇数时,无解。
证明:
把n个灯泡排成一排。 如: 0000000.........000,
按照顺序对其(n/k)次控制,变成:XXXXXXX...X00...000,
令:n mod k 代表经过(n/k)次控制后灯泡亮着的个数。
如果我们对(n mod k)个亮着的灯拿奇数个进行控制,那么必然也要对先前灭着的灯拿奇数
个进行控制(因为k为偶数)也就导致有奇数个灭着的灯变亮,在加上先前(n mod k)个亮着
的灯中有偶数个灯亮着( 因为n mod k为奇数)。到最后亮着的灯加起来还是有奇数个灯亮着。
而我们要使所有的灯全部灭掉,到最后一步控制时,一定要有 k 个灯亮着(其中k为偶数)

同理: 如果我们对(n mod k)个亮着的灯拿偶数个进行控制,到最后还是有奇数个灯亮着
这样显然矛盾,固无解。
gnefuil 2004-02-03
  • 打赏
  • 举报
回复
当n-k为偶数时,次数是[n/k]+2
当n-k为奇数时
当k为偶数,无解
当k为奇数,次数是[n/k]+3
gnefuil 2004-02-02
  • 打赏
  • 举报
回复
用不着编程,手工就可以完成
ooooo
***oo
*oo*o
*****
再来一个通用的,如果有n个灯泡
当n%3=2时,就跟5的时候一样,把前面的灯泡都灭掉,剩下五个灯泡按上面的方法做
用的次数为[n/3]+2
当n%3=1时,相当于4个灯泡的时候
oooo
***o
*oo*
o*oo
****
用的次数是[n/3]+3

我初中时候做这题是用广度优先搜的,然后就发现了规律

33,029

社区成员

发帖
与我相关
我的任务
社区描述
数据结构与算法相关内容讨论专区
社区管理员
  • 数据结构与算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧