北大mooc,程序设计与算法(三)

题目

描述
魔兽世界的西面是红魔军的司令部,东面是蓝魔军的司令部。两个司令部之间是依次排列的若干城市。
红司令部,City 1,City 2,……,City n,蓝司令部

两军的司令部都会制造武士。武士一共有 dragon 、ninja、iceman、lion、wolf 五种。每种武士都有编号、生命值、攻击力这三种属性。

双方的武士编号都是从1开始计算。红方制造出来的第n个武士,编号就是n。同样,蓝方制造出来的第n个武士,编号也是n。

武士在刚降生的时候有一个生命值。

在每个整点,双方的司令部中各有一个武士降生。

红方司令部按照iceman、lion、wolf、ninja、dragon的顺序循环制造武士。

蓝方司令部按照lion、dragon、ninja、iceman、wolf的顺序循环制造武士。

制造武士需要生命元。

制造一个初始生命值为m的武士,司令部中的生命元就要减少m个。

如果司令部中的生命元不足以制造某个按顺序应该制造的武士,那么司令部就试图制造下一个。如果所有武士都不能制造了,则司令部停止制造武士。

给定一个时间,和双方司令部的初始生命元数目,要求你将从0点0分开始到双方司令部停止制造武士为止的所有事件按顺序输出。
一共有两种事件,其对应的输出样例如下:

  1. 武士降生
    输出样例: 004 blue lion 5 born with strength 5,2 lion in red headquarter
    表示在4点整,编号为5的蓝魔lion武士降生,它降生时生命值为5,降生后蓝魔司令部里共有2个lion武士。(为简单起见,不考虑单词的复数形式)注意,每制造出一个新的武士,都要输出此时司令部里共有多少个该种武士。

  2. 司令部停止制造武士
    输出样例: 010 red headquarter stops making warriors
    表示在10点整,红方司令部停止制造武士

输出事件时:

首先按时间顺序输出;

同一时间发生的事件,先输出红司令部的,再输出蓝司令部的。

输入
第一行是一个整数,代表测试数据组数。

每组测试数据共两行。

第一行:一个整数M。其含义为, 每个司令部一开始都有M个生命元( 1 <= M <= 10000)。

第二行:五个整数,依次是 dragon 、ninja、iceman、lion、wolf 的初始生命值。它们都大于0小于等于10000。
输出
对每组测试数据,要求输出从0时0分开始,到双方司令部都停止制造武士为止的所有事件。
对每组测试数据,首先输出"Case:n" n是测试数据的编号,从1开始 。
接下来按恰当的顺序和格式输出所有事件。每个事件都以事件发生的时间开头,时间以小时为单位,有三位。
样例输入
1
20
3 4 5 6 7
样例输出
Case:1
000 red iceman 1 born with strength 5,1 iceman in red headquarter
000 blue lion 1 born with strength 6,1 lion in blue headquarter
001 red lion 2 born with strength 6,1 lion in red headquarter
001 blue dragon 2 born with strength 3,1 dragon in blue headquarter
002 red wolf 3 born with strength 7,1 wolf in red headquarter
002 blue ninja 3 born with strength 4,1 ninja in blue headquarter
003 red headquarter stops making warriors
003 blue iceman 4 born with strength 5,1 iceman in blue headquarter
004 blue headquarter stops making warriors

自己代码

红方类和蓝方类;
静态司令部声明和各武士数量;
数组存放红方和蓝方的造兵顺序,造兵时可直接放进下标进行索引;
建立两方的结束标志位;
大循环为时刻循环,小循环为每个时刻造兵5次,若能造兵则跳出小循环,5次不能则结束标志位置0;
双方都结束,跳出大循环。

#include <iostream>
#include <string>
#include <iomanip>
using namespace std;int a[5] = {0, 0, 0, 0, 0};    //用于存放武士生命值,因为类构造函数需要,所以设为全局class Red //红方
{public:static int life;static int num_a[5];Red(int o){num_a[o] += 1;life -= a[o];}
};class Blue    //蓝方
{public:static int life;static int num_a[5];Blue(int o){num_a[o] += 1;life -= a[o];}
};//静态成员类外声明
int Red :: life = 0;
int Blue :: life = 0;
int Red :: num_a[5];
int Blue :: num_a[5];//初始化函数
void Init(int m)
{Red :: life = m;Blue :: life = m;for(int i = 0; i < 5; ++i){Red :: num_a[i] = 0;Blue :: num_a[i] = 0;}
}int main()
{int n = 0, m = 0;int order_R[5] = {2, 3, 4, 1, 0};  //红方造兵顺序int order_B[5] = {3, 0, 1, 2, 4};  //蓝方造兵顺序int flag_R = 1, flag_B = 1;           //造兵结束标志int minn = 0;                      //武士生命最小值,判断司令部是否停止造兵string s[5] = {" dragon ", " ninja ", " iceman ", " lion ", " wolf "};   //存放武士名称cin >> n;for(int i = 1; i <= n; ++i)   //情况循环{cin >> m;cin >> a[0] >> a[1] >> a[2] >> a[3] >> a[4];flag_R = 1, flag_B = 1;   //结束标志位cout << "Case:" << i << endl;Init(m);for(int j = 0, kr = 0, kb = 0; ; ++j, ++kr, ++kb)  //时间顺序循环{if(kr > 4)  //红方从5个兵种中循环造兵kr = 0;if(kb > 4)kb = 0;for(int k = 0; k < 5; ++k) //红方造兵,如果总声明不够了,换造下一个兵种{if(Red :: life >= a[order_R[kr]]){Red r(order_R[kr]); //造兵cout<<setw(3)<<setfill('0')<<j<<" red"<<s[order_R[kr]]<<j+1<<" born with strength "<<a[order_R[kr]]<<","<<Red :: num_a[order_R[kr]]<<s[order_R[kr]]<<"in red headquarter"<<endl;break;}else if(flag_R == 1 && k == 4)  //试了一圈都不能造兵{flag_R = 0;cout<<setw(3)<<setfill('0')<<j<<" red headquarter stops making warriors"<<endl;break;}kr += 1;if(kr > 4)kr = 0;if(kb > 4)kb = 0;}for(int k = 0; k < 5; ++k)   //蓝方造兵,如果总生命不够了,换造下一个兵种{if(Blue :: life >= a[order_B[kb]]){       Blue b(order_B[kb]);cout<<setw(3)<<setfill('0')<<j<<" blue"<<s[order_B[kb]]<<j+1<<" born with strength "<<a[order_B[kb]]<<","<<Blue :: num_a[order_B[kb]]<<s[order_B[kb]]<<"in blue headquarter"<<endl;break;}else if(flag_B == 1 && k == 4)   //试了一圈都不能造兵{flag_B = 0;cout<<setw(3)<<setfill('0')<<j<<" blue headquarter stops making warriors"<<endl;break;}kb += 1;if(kr > 4)kr = 0;if(kb > 4)kb = 0;}if(flag_R == 0 && flag_B == 0)    //结束判断break;}}return 0;
}

013:魔兽世界之一:备战相关推荐

  1. 北大C++课后题系列:013: 魔兽世界之一:备战

    C++ 013: 魔兽世界之一:备战 北大程序设计与算法(三) 描述 魔兽世界的西面是红魔军的司令部,东面是蓝魔军的司令部.两个司令部之间是依次排列的若干城市. 红司令部,City 1,City 2, ...

  2. [土狗之路]Coursera 北京大学C++ 魔兽世界:备战

    这道题目中间因为学校正课耽误了很久,结果时间到了 coursera 把我的课都给锁了,哎,申请了助学金,慢慢弄吧,之前心态不好,确实错在了细节,现在debug以及代码重构了,重新把代码po上来,然后开 ...

  3. 魔兽世界之一:备战(模拟)

    原题链接 最近几天练练模拟吧. A:魔兽世界之一:备战 总时间限制:  1000ms 内存限制:  65536kB 描述 魔兽世界的西面是红魔军的司令部,东面是蓝魔军的司令部.两个司令部之间是依次排列 ...

  4. Openjudge上mooc组题目:魔兽世界:备战

    新人第一次写博客,此贴纪念意义大于实用性~ 这些代码是我花了一天多时间写的,本人水平属实拉跨,求各位大神轻喷. 我个人觉得我代码里的核心就是就是red和blue里的creat的方法,我个人偷偷的利用了 ...

  5. mooc 魔兽世界1 备战 的代码(可能输出要求和题意不符)

    这道题考察类的应用,我试了试那些测试数据,输出应该都是对的,不知道为什么最后总是wrong answer. 有可能是因为我是输入一组之后立刻输出一组?而题意是输入全部数据后一并输出吗? 如果那个样子的 ...

  6. 005:魔兽世界之一:备战

    这是一个特别的寒假,疫情来临,寒假延迟,想着之前学C#有诸多疑问,便循着源头学起了C/C++,mooc北大郭炜老师的程序设计课,万万没想到,课上内容看似简单,出的测试题确实让我头大,光是一个005:魔 ...

  7. mooc程序设计与算法(三)C++面向对象程序设计 类和对象提高 编程作业 5:魔兽世界之一:备战

    5:魔兽世界之一:备战 这道题是典型的,看了题目不想做题系列... 题目太长,看了,看不懂....后来,上网找了某博客中据说是老师的代码,研究了一下,觉得真的,c++面向对象编程还是很深奥的....下 ...

  8. PKU MOOC作业魔兽世界之一:备战的结构化程序

    一不小心踏入PKU程序设计专项课程,没先听课就交钱加入.这门课,目的是培养程序员,从0基础,到程序设计员的培养,课程顺序是C语言-算法-数据结构,实际拆分为6+1门(毕业项目),理念不可谓不好.但是, ...

  9. POJ 魔兽世界之一:备战 题解

    POJ 魔兽世界之一:备战 题解 来源: POJ 注意: 总时间限制: 1000ms 内存限制: 65536kB 描述 魔兽世界的西面是红魔军的司令部,东面是蓝魔军的司令部.两个司令部之间是依次排列的 ...

最新文章

  1. Java创建一个文件变量_java如何定义一个类,创建它的成员变量和方法?
  2. 冰雪奇缘,白色世界:四个IT人的四姑娘山双桥沟游记
  3. jquery数据折叠_通过位折叠缩小大数据
  4. python调用ctypes中windll中的方法超时处理_python中使用ctypes调用MinGW生成的动态链接库(dll)...
  5. metadata.js
  6. Java Micro services: 传送唯一标识(request id)在Hessian call, rest API,JMS和Thread之间
  7. java 限时线程_Java线程中的七种状态
  8. mysql循环map_java Map 遍历速度最优解
  9. 深入理解目标检测与YOLO(从v1到v3)
  10. 如何设置pycharm代码字体
  11. 【复变函数与积分变换】【第一章 复数与复变函数】
  12. 什么是静态分析?代码分析工具
  13. sqlite3 error: database is locked
  14. 工作缺点和不足及措施_工作总结中的不足与改进该怎么写?
  15. 沐阳从0到1零基础学习安卓逆向
  16. 计算机无纸化考试合卷答题笔记卡,高级会计师无纸化考试攻略都在这 第一次考也不用慌...
  17. Tensorflow C++接口部署python深度学习训练模型
  18. svn update 出现skipped '.' 或skipped '目录名称'
  19. 【卷积神经网络】卷积层,池化层,全连接层
  20. spm,afni的安装和使用心得

热门文章

  1. H5实现微信分享自定义地图
  2. 英文缩写(控制理论领域) 摘录
  3. Mysql启动报错:The server quit without updating PID file (/usr/local/mysql/data/buq224xi.pid).
  4. 1.魔金商城-会员登录注册相关
  5. openCV-python实现幻灯片渐变效果
  6. 马云的新零售时代玩法,你懂多少?
  7. 一篇吃透Redis缓存穿透、雪崩、击穿问题
  8. 2022-2028全球观赏鹦鹉饲料行业调研及趋势分析报告
  9. Android Studio App 图标更改 以及名称更改
  10. 江苏开放大学计算机形考作业,江苏开放大学形考作业二.doc