zoukankan      html  css  js  c++  java
  • 抓老鼠啊~亏了还是赚了?

    某地老鼠成灾,现悬赏抓老鼠,每抓到一只奖励10元,于是开始跟老鼠斗智斗勇:每天在墙角可选择以下三个操作:放置一个带有一块奶酪的捕鼠夹(T),或者放置一块奶酪(C),或者什么也不放(X)。捕鼠夹可重复利用,不计成本,奶酪每块3元。
    聪明的老鼠呢?它们每天可能会派出一只老鼠到墙角,看看墙角有啥:
    若什么也没有(X),老鼠们就不高兴了(Unhappy),会有长达一天(也就是第二天)的不高兴期。在不高兴期间,不派出老鼠。不高兴期结束之后,派出老鼠。
    若有捕鼠夹(T),这只老鼠被引诱吃掉奶酪并被打死(Dead),老鼠们会有长达两天(也就是第二和第三天)的伤心期。在伤心期间,不派出老鼠。伤心期结束之后,派出老鼠。在这种情况下,抓到1只老鼠可获得奖励10元,但同时也耗费了一块奶酪。注意,如果某一天放置了捕鼠夹但老鼠没有出现,则没有耗费奶酪。
    若有奶酪(C),老鼠吃了奶酪会很开心(Happy!),会有长达两天(第二和第三天)的兴奋期。在兴奋期间,即使叠加了不高兴或者伤心,也必定派出老鼠。在这种情况下,没抓到老鼠,而且耗费了一块奶酪。注意,如果某一天放置了奶酪但老鼠没有出现,则奶酪可以下次再用,没有耗费。
    现在给你连续几天的操作序列,且已知第一天肯定会派出老鼠,请判断老鼠每天的状态,并计算盈利。
    输入格式:
    输入在一行中给出连续的由C或T或X组成的不超过70个字符的字符串,以$结束。字符串中每个字符表示这一天的操作( 即X:什么都不放;T:放捕鼠夹;C:放奶酪)。题目保证至少有一天的操作输入。
    输出格式:
    要求在第一行输出连续的字符串,与输入相对应,给出老鼠的状态:
    ! 表示派出老鼠吃到奶酪
    D 表示派出老鼠被打死
    U 表示派出老鼠无所获
    - 表示没有派出老鼠
    第二行则应输出一个整数表示盈利。(如果有亏损,则是负数)
    输入样例1:
    TXXXXC$
    输出样例1:
    D--U-!
    4
    输入样例2:
    CTTCCX$
    输出样例2:
    !DD--U
    11

    (1)实验代码

    #include<stdio.h>
    int main()
    {
        char a;
        int i,b=0,e,f,c=1,d=0,g=0;
        
        for (i=1;;i++)
        {
            scanf("%c",&a);
            if(a=='$')
                break;
            if(c==1)
                switch(a)
                {
                    case 'X':
                    {
                        e=1;
                        printf("U");
                        break;
                    }
                    case 'T':
                    {
                         f=2;
                         d++;
                         g++;
                         printf("D");
                         break;                   
                        case 'C':
                        {
                            b=2;
                            d++;
                            printf("!");
                            break;
                        } 
                    }
                }
                    else            
                        printf("-");             
                    if(b>0)
                    { 
                        b--;
                        c=1;
                        e=0;
                        f==0;
                    }
                    else if(b<=0&&e==1) 
                    {
                        c=0;
                        e--;
                    }
                    else if(b<=0&&f>0)  
                    {
                        c=0;
                        f--;
                    }
                    else 
                        c=1;
        }
        printf("
    %d",g*10-d*3);
    }

    2.设计思路

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

    问题1:没有理清奶酪的数量怎么算,逻辑也很混乱
    解决1:参考其他博主的代码
    问题2;关于用get char与scanf的区别
    解决2:找度娘,打算下一篇博客写一下关于这个的区别
    问题3:为什么要用#include<string.h>
    解决4:看了一下其他博主的博文,大概理解的是#include"string.h"表示包含字符串处理函数的头文件,是C语言中的预处理命令。经该预处理后,可调用字符串处理函数

    第一步:定义变量(整型与字符型)
    第二步:运用for语句判断出位数,再用switch语句选择每个字母对应的结果,然后用if-else语句判断
    第三步:打印结果

    (3)本题调试过程碰到问题及解决办法
    问题1:题目太绕,读题下来思路不清晰
    解决方法:多读几遍题,直到读懂为止

    问题2:情况太多,考虑不全
    解决方法:自己慢慢思索,然后看其他同学的代码

    问题3:一开始不理解为什么不用return 0结尾
    解决方法:翻看以前做过的一道题,然后就清楚了

    4.运行截图

  • 相关阅读:
    Read-Copy Update Implementation For Non-Cache-Coherent Systems
    10 华电内部文档搜索系统 search04
    10 华电内部文档搜索系统 search05
    lucene4
    10 华电内部文档搜索系统 search01
    01 lucene基础 北风网项目培训 Lucene实践课程 索引
    01 lucene基础 北风网项目培训 Lucene实践课程 系统架构
    01 lucene基础 北风网项目培训 Lucene实践课程 Lucene概述
    第五章 大数据平台与技术 第13讲 NoSQL数据库
    第五章 大数据平台与技术 第12讲 大数据处理平台Spark
  • 原文地址:https://www.cnblogs.com/yun522/p/10440712.html
Copyright © 2011-2022 走看看