抓老鼠啊~亏了还是赚了?

题目:某地老鼠成灾,现悬赏抓老鼠,每抓到一只奖励10元,于是开始跟老鼠斗智斗勇:每天在墙角可选择以下三个操作:放置一个带有一块奶酪的捕鼠夹(T),或者放置一块奶酪(C),或者什么也不放(X)。捕鼠夹可重复利用,不计成本,奶酪每块3元。

 

设计思路

该题一共有3个操作,这三个操作又会给老鼠带来三种状态(unhappy,sad,happy),这三种状态决定的是否行动(move)

根据题目描述作出判断后即可输出结果

本题调试过程碰到问题及解决办法

该题需要注意(我在做的时候误解的地方)

  • 奶酪、老鼠夹在放下后,无论状态如何,都会在一天结束后收回(如果奶酪被吃了当然就不能收回了)
  • 老鼠伤心是接下来的两天,并非伤心的时间+2

 

运行结果

实验代码

 1 #include <stdio.h>
 2 
 3 int main(void)
 4 {
 5     char act[70];
 6     int n,unhappy,sad,happy,
 7        money,move;
 8 
 9     scanf("%s",act);
10 
11     n=0,money=0,move=1,12     sad=0,unhappy=0,happy=0;
13     while(act[n]!='$'&& act[n]!='\0')//避免输入没有$而出现死循环
14     {
15       char c = act[n];
16 
17       if(sad==0&&unhappy==0&&happy==0)//没有任何状态时老鼠出动
18       {
19           move=1;
20       }
21 
22       else if(happy!=0)
23       {
24           move=1;
25           happy-=1;
26           if(sad!=0)
27           {
28               sad-=1;
29           }
30           else if(unhappy!=0)
31           {
32               unhappy-=1;
33           }
34       }
35 
36       else if(sad!=0)
37       {
38           move=0;
39           sad-=1;
40       }
41 
42       else if(unhappy!=0)
43       {
44           move=0;
45           unhappy-=1;
46       }
47 
48       if(move==0)
49       {
50           printf("-");
51       }
52 
53 
54       if(c=='T')
55       {
56         if(move)
57         {
58             money+=7;
59             sad+=2;
60             if(sad>2)//老鼠牺牲是接下来两天伤心
61             {        //并非伤心时间加两天
62                 sad-=1;//这种方法只能算是亡羊补牢
63             }
64             printf("D");
65         }
66       }
67 
68       if(c=='C')
69       {
70           if(move)
71           {
72             money-=3;
73             happy+=2;
74             printf("!");
75           }
76       }
77 
78       if(c=='X')
79       {
80           if(move)
81           {
82                 unhappy+=1;
83                 printf("U");
84 
85           }
86       }
87 
88     n++;
89     }
90     printf("\n%d",money);
91     return 0;
92 }

 

posted @ 2019-02-20 20:36  harsonyoung  阅读(176)  评论(0)    收藏  举报