7-1 抓老鼠啊~ 亏了还是赚了? (20 分)
某地老鼠成灾, 现悬赏抓老鼠, 每抓到一只奖励 10 元, 于是开始跟老鼠斗智斗勇: 每天在墙角可选择以下三个操作: 放置一个带有一块奶酪的捕鼠夹(T), 或者放置一块奶酪(C), 或者什么也不放(X). 捕鼠夹可重复利用, 不计成本, 奶酪每块 3 元.
聪明的老鼠呢? 它们每天可能会派出一只老鼠到墙角, 看看墙角有啥:
若什么也没有 (X), 老鼠们就不高兴了(Unhappy), 会有长达一天(也就是第二天) 的不高兴期. 在不高兴期间, 不派出老鼠. 不高兴期结束之后, 派出老鼠.
若有捕鼠夹 (T), 这只老鼠被引诱吃掉奶酪并被打死(Dead), 老鼠们会有长达两天(也就是第二和第三天) 的伤心期. 在伤心期间, 不派出老鼠. 伤心期结束之后, 派出老鼠. 在这种情况下, 抓到 1 只老鼠可获得奖励 10 元, 但同时也耗费了一块奶酪. 注意, 如果某一天放置了捕鼠夹但老鼠没有出现, 则没有耗费奶酪.
若有奶酪 (C), 老鼠吃了奶酪会很开心(Happy!), 会有长达两天(第二和第三天) 的兴奋期. 在兴奋期间, 即使叠加了不高兴或者伤心, 也必定派出老鼠. 在这种情况下, 没抓到老鼠, 而且耗费了一块奶酪. 注意, 如果某一天放置了奶酪但老鼠没有出现, 则奶酪可以下次再用, 没有耗费.
现在给你连续几天的操作序列, 且已知第一天肯定会派出老鼠, 请判断老鼠每天的状态, 并计算盈利.
输入格式:
输入在一行中给出连续的由 C 或 T 或 X 组成的不超过 70 个字符的字符串, 以 $ 结束. 字符串中每个字符表示这一天的操作( 即 X: 什么都不放; T: 放捕鼠夹; C: 放奶酪). 题目保证至少有一天的操作输入.
输出格式:
- ...
- include<stdio.h>
- int main(void)
- {
- int happy=0,unhappy=0,sad=0;
- int money=0;
- char ch;
- while((ch=getchar())!='$'){
- if(sad>0&&happy==0){
- printf("-");
- sad--;
- }
- else if(unhappy>0&&happy==0){
- printf("-");
- unhappy--;
- }
- else{
- if(happy>0){
- happy--;
- }
- if(ch=='T'){
- printf("D");
- sad=2;
- money+=7;
- }
- if(ch=='C'){
- printf("!");
- happy=2;
- money-=3;
- }
- if(ch=='X'){
- printf("U");
- unhappy=1;
- }
- }
- }
- printf("\n%d",money);
- return 0;
- }
- ...
来源: http://www.bubuko.com/infodetail-2934866.html