关于翻水碗的问题

636f6c696e 2011-08-29 09:50:16
看来好多人小时候没玩过文曲星上的一个类似的游戏啊,只不过是5*5的.
翻水碗只是他的一维形态而已。
我就说两点,你们应该就能明白过来了。
对于n个碗,我们可以设置状态为a[n],0为正面1为反面。每个碗的翻动此时是b[n]
1.每个位置翻2次等于没翻。因此最优解每个位置要么是翻要么就是不翻。因此b[i]不是0就是1。
2.第一个碗是否翻动,决定了后面碗是否需要翻动,这是一个递推的过程。
a[0]的值取决于b[0]和b[1],b[0]确定了,b[1]确定。同理a[1]的值取决于b[0] b[1] b[2],b[0] b[1]确定,b[2]确定,因此类推。
就两种情况,第一个碗翻还是不翻。

有异议者本帖回复。
...全文
215 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
xibeitianlang 2011-09-07
  • 打赏
  • 举报
回复
[Quote=引用楼主 colinfang2006 的回复:]
看来好多人小时候没玩过文曲星上的一个类似的游戏啊,只不过是5*5的.
翻水碗只是他的一维形态而已。
我就说两点,你们应该就能明白过来了。
对于n个碗,我们可以设置状态为a[n],0为正面1为反面。每个碗的翻动此时是b[n]
1.每个位置翻2次等于没翻。因此最优解每个位置要么是翻要么就是不翻。因此b[i]不是0就是1。
2.第一个碗是否翻动,决定了后面碗是否需要翻动,这是一个递推的过程。
……
[/Quote]
第一个碗,翻与不翻并不是最关键的。
你只要能证明:当n=3k+2时,(k为正整数)最优解的翻动次数不超过2k+1就行了。
比如20个碗的任意状态,最优翻动不超过13次。
asmlearn 2011-09-03
  • 打赏
  • 举报
回复
我有两点不明白:
1、这个游戏的初始状态是什么,也就是说,开始碗都是翻着放的吗?
2、游戏规则是前一个碗翻了后面的就必须翻吗?
keeya0416 2011-08-29
  • 打赏
  • 举报
回复
我支持楼主的想法
上次也有这个问题的帖子
里边有不少人反对这个方法

33,010

社区成员

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

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