一个硬币问题(ACM竞赛试题)

AresGod 2003-04-12 10:10:55
一个硬币问题
给定N枚硬币,其中有正面的有反的输入用这种方法,每次只能翻动相邻的3个要求将硬币翻到所要的状态:全是正面,或全是反面
要求用最少的步骤完成,并打印出步骤
输入方法:1代表正面,0代表反面
比如1000111
对结果的要求 1
就是说硬币的排列是正反反反正正正 要求全部结果为正
要求语言:C
...全文
542 49 打赏 收藏 转发到动态 举报
写回复
用AI写文章
49 条回复
切换为时间正序
请发表友善的回复…
发表回复
AresGod 2003-05-25
  • 打赏
  • 举报
回复
最近学校封了网络上不了网,好久没有来了。谢谢大家了,封帖
mathe 2003-04-22
  • 打赏
  • 举报
回复
To Riemann: 我也没做出来 :)
AresGod 2003-04-21
  • 打赏
  • 举报
回复
看了大家这么多,我想了几天突然冒出一个这样想法,用二进制的非表示翻硬币,因为最小就是一个硬币最多翻一次,也就是说我可是生成一个N位的二进制数,然后用穷举的方法进行比较,一共的穷举次数为2的n次方.问题的难度在于解决用什么样的方法来进行模拟,是用数组储存,还是用一个n位的二进制数来储存,我今天晚上做了一个用数组储存的,但是没有调通,明天还有概率统计的课程,不能搞得太晚,明天我再调一下,看能不能行
AresGod 2003-04-21
  • 打赏
  • 举报
回复
真的很崇拜那些数学学的好的.我到一直到高中都是经常参加数学竞赛的,也在省里面获得过一些名次,但是由于高考的一些问题,现在的专业离数学越来越远,自己都有些痛恨自己,想考研,可是到现在我的大学里面的数学都学得很烂.......
咳!
mathe 2003-04-21
  • 打赏
  • 举报
回复
呵呵
1.对于这个问题其实我也有些不清楚
2.这次问的人比较多呀
3.熟能生巧呀,我回答得多了,也就自然能更详细一些
kbsoft 2003-04-21
  • 打赏
  • 举报
回复
我问你好多次你都没回答的如此详细. mathe不公平!!!
Riemann 2003-04-21
  • 打赏
  • 举报
回复
呵呵,谢谢mathe的指点,在http://members.lycos.co.uk/huidu/club/上我也曾得到过你的指点,不知道你是否还记得那个认为“极值问题”可以用数学归纳法证明的人,不过很可惜,我想错了,而且后来也没做出来。惭愧!!
mathe 2003-04-21
  • 打赏
  • 举报
回复
高维情况就成为解2阶域上的一个线性方程组了。
在http://members.lycos.co.uk/huidu/club/club.php?bbsid=8c3749cecafef192
有二维情况的解答方法,不过由于矩阵可能不可逆,所以对于某些n,计算最优解的时间复杂度还是不小,但是如果只是要一个次优解,那就比较简单了。
mathe 2003-04-21
  • 打赏
  • 举报
回复
在中学的时候搞过数学竞赛,大学时学的是数学专业;不过此后就6,7年基本上没有接触数学了,象高等数学(除了非常常用的微积分,概率论等)中的大部分理论都忘记了,只有初等数学基本上还可以保持七八分水平。

学习数学的最大好处可以锻炼你的逻辑思维能力。学好了数学,计算机中的算法问题不过是一些很简单的游戏而已。

如果说学习数学的奥妙,我想有一下几点:
1.兴趣,数学是非常抽象的一门学科,没有兴趣,肯定会感觉其枯燥无味。
2.要学会使用数学语言,数学是又她自己的语言的,我们可以在网络上看到很多人宣称其证明了哥德巴赫猜想,很可惜,只要简单的扫描一下他们的证明,就可以知道,这肯定是错误的,因为他们根本连数学语言都不懂,像这种人,你就是要向他们解释他们的错误都很难。
3.多多练习,多看一些IMO的题目,多做一些IMO的题目,可以有不少作用。初等数学的题目对于锻炼逻辑思维非常有好处。如果能够投入一两年的时间,已经足够了。
4.要勤于思考,仅仅去做一些题目还是没有作用的,要多想一想为什么要这样做。
5.数学天赋也非常重要,不是所有的人都可以学好数学的。
drag2003 2003-04-20
  • 打赏
  • 举报
回复
直线简单,平面难,立体更难,再加上时间就无解了。

直线就是翻硬币,平面就是加上上下左右,立体即魔方,再加时间,各位,算去吧。
drag2003 2003-04-20
  • 打赏
  • 举报
回复
个人觉得mathe()的算法有点问题。他说:
“简单,直接从左到右,依次使前面n-2个硬币调整到所需的方向,如果最后两个硬币这时已经达到要求,就已经找到最优解了,不然无解。
比如1000111
首先看第一个元素,已经是1了跳过。
然后第二个元素,为0,翻动2,3,4,
然后再看第3,4,5,全部为1,所以就结束了。
由于6,7位是1,所以找到了最优解需要翻动1次”

我觉得还要考滤从右往左。如: 10100111 要是从右往左就会好很多。
Riemann 2003-04-20
  • 打赏
  • 举报
回复
to drag2003(龙飞):
mathe()已经证明,任意交换操作序列的次序,不回改变操作的结果,对于最优操作序列,换序后仍为最优。
你所给的情况是无法翻到全1情形的,不明白你的"好很多"体现在哪儿。是判断它无解吗?这与mathe()说的并不矛盾,他并没有说这是判断无解的最优方法。事实上,最优性原理在判断此硬币序列是否无解的情况下并不成立。
Godow 2003-04-20
  • 打赏
  • 举报
回复
学习
DDRBillOB 2003-04-19
  • 打赏
  • 举报
回复
http://icpc.baylor.edu/icpc/Finals/2003ProblemsRevision4.pdf

今年的ACM试题.楼主的题就是这次ACM的问题B
AresGod 2003-04-19
  • 打赏
  • 举报
回复
不知道怎么加
AresGod 2003-04-19
  • 打赏
  • 举报
回复
我再增加50分吧
AresGod 2003-04-19
  • 打赏
  • 举报
回复
谢谢了!!!高人!
omrhal 2003-04-19
  • 打赏
  • 举报
回复
接受教育了……
ZhangYv 2003-04-18
  • 打赏
  • 举报
回复
问一下mathe,你是怎么学数学的?就你给出的分析来说,普通的学生(人)是到不了这种水平的。传点经验给大家:)
ZhangYv 2003-04-18
  • 打赏
  • 举报
回复
我后悔以前没去读数学专业。数学是自然科学的明珠,而计算机将逐渐成为这颗明珠的支架
加载更多回复(29)

33,010

社区成员

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

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