FOJ 1003 Counterfeit Dollar
来源:互联网 发布:医疗投资集团 知乎 编辑:程序博客网 时间:2024/04/27 06:31
原题:
http://acm.fzu.edu.cn/problem.php?pid=1003
分析:
经典的题目(大部分版本是区分苹果).这题最关键的就是充分挖掘每次称得的结果所提供的信息.
这题使用了一个包含12个元素的整型数组,用来标记对应的硬币的状态.
* 未知标记为2
* 正常标记为0
* 可能轻标记为-1
* 可能重标记为1.
下面结合称出的结果说明解题方法:
1) 平衡 : 既然是平衡,那么天平上的硬币就都是正常的.那就都标记为0,且不再改变(标记为0,就确定是正常的).
2)右边高: 可能一个重的假硬币在左边,也可能一个轻的假硬币在右边.这要分情况讨论.
* 被称的硬币是"未知"状态: 在左边就标记为重,在右边就标记为轻.
* 被称的硬币已经被标记为"可能为重":在左边的不改变状态.在右边的标记为正常.(先是"可能为重",后又"可能为轻",那么就是正常的)
* 被称的硬币已经被标记为"可能为轻":在左边的标记为正常.在右边就不改变状态.
一次不平衡的结果还隐藏着,不再天平上的硬币都是"正常"的信息.所以,标记此次没称的硬币为"正常".
3) 右边低: 与"2) 右边高" 同理.
伪代码:
MARK-LIGHT-COINS(arr[], len)
1 for i ← 1 to len
2 do if current coin state is "Heavy"
3 then change current coin state to "True"
4 if current coin state is "Unknow"
5 then change current coin state to "Light"
源码:(VC++)
- FOJ 1003 Counterfeit Dollar
- FOJ 1003 Counterfeit Dollar
- FOJ Problem 1003 Counterfeit Dollar
- HDU 1482/ZOJ 1184/FOJ 1003/POJ 1013 Counterfeit Dollar
- FZU 1003 Counterfeit Dollar
- Counterfeit Dollar - POJ 1003 水题
- fuzhuo---Problem 1003 Counterfeit Dollar
- Counterfeit Dollar
- Counterfeit Dollar
- Counterfeit Dollar
- Counterfeit Dollar
- Counterfeit Dollar
- Counterfeit Dollar
- Counterfeit Dollar
- Counterfeit Dollar
- Counterfeit Dollar
- Counterfeit Dollar
- Counterfeit Dollar
- 我的第一篇博客
- MFC ActiveX 控件播放Flash
- Oracle启动服务详解以及手动控制
- 认识DMA
- flex初学(一)
- FOJ 1003 Counterfeit Dollar
- [转]关于找工作或找实习的一点建议--认真准备
- 【开放 5月22日 编程实践 内含资料】 找出考试第三名的成绩, 你可以么? _______周末放松一下,进来学习学习吧!
- SQL Server 智能感知插件SQL Prompt 4(有图有真相)
- 移动信息100期,寻找的就是你
- ubuntu中如何将终端添加到右键?
- 基于XNA的SLG小游戏:(Super Strategy Restart)SSR
- linux小系统支持中文的问题
- 系统总线