CodinGame: The Descent 反思
来源:互联网 发布:悬疑片推荐知乎 编辑:程序博客网 时间:2024/06/07 03:14
CodinGame 中的一款easy难度的编程游戏,第一次接触,玩的时候很多方面都有些不懂,像数据的输入。这是一篇随笔吧,记录,反思……
有兴趣可以去看看,可以学到蛮多编程知识的,其过程也是蛮有趣的~
The descent 星舰降落
The Goal
Destroy the mountains before your starship collides with one of them. For that, shoot the highest mountain on your path.
//在你的星舰和山碰撞之前,摧毁山峰。为此,你需要在你的路上轰击 最高 的山峰。 collide 碰撞
Rules
At the start of each game turn, you are given the height of the 8 mountains from left to right.
By the end of the game turn, you must fire on the highest mountain by outputting its index (from 0 to 7).
//游戏开始时,你会得到(输入)从左到右七座山的高度;在游戏中星舰转向时,你必须对最高峰开火(通过输出山峰的编号 0~7)。
Firing on a mountain will only destroy part of it, reducing its height. Your ship descends after each pass.
//轰击山,会摧毁山的一部分,减低它的高度。没过一次(单程)星舰的高度会下降。
原·源程序
#include <iostream>#include <string>#include <vector>#include <algorithm>using namespace std;/** * The while loop represents the game. * Each iteration represents a turn of the game * where you are given inputs (the heights of the mountains) * and where you have to print an output (the index of the mountain to fire on) * The inputs you are given are automatically updated according to your last actions. **/int main(){ // game loop while (1) { for (int i = 0; i < 8; i++) { int mountainH; // represents(表示) the height of one mountain. cin >> mountainH; cin.ignore (); } // Write an action using cout. DON'T FORGET THE "<< endl" // To debug: cerr << "Debug messages..." << endl; cout << "4" << endl; // The index of the mountain to fire on. }}
五个关卡
Descending mountains //山的高度是递减的 descending: 递减
Game information:
Let’s destroy those mountains to secure our landing…
Height of mountain 0 : 9 //读法:0编号的山高度为9;以下相同
Height of mountain 1 : 8 //输入山的高度8;cin >> mountainH;
Height of mountain 2 : 7
Height of mountain 3 : 6
Height of mountain 4 : 5
Height of mountain 5 : 4
Height of mountain 6 : 3
Height of mountain 7 : 2
/**开始时,我是简单的看规律:while (1) { for (int i = 0; i < 8; i++) { int mountainH; cin >> mountainH; cin.ignore (); cout << 9-mountainH << endl; //山的高度加编号等于9; //但之后的关卡不能这样用,是要一个程序通过五个关卡的 }后来仔细一看,是要在输入的高度(数据)中找到最大高度,并输出对应的编号;这个一开始是想使用数组完成,但发现并不是最简单的,且数据也是一直在输入,不太适用;又想到用 i 作为山的编号,通过循环比较找到最高峰对应的 imax, 并输出; int imax = 0 ; //最高山峰的编号 while (1) { int max = 0 ; //最高峰的高度,并初始化为0; //这个是需要注意的,因为后期输入的数值会变 for (int i = 0; i < 8; i++) { int mountainH; // represents the height of one mountain. cin >> mountainH; cin.ignore (); if (mountainH > max) { max = mountainH; imax = i; } }*注:山在被轰击后,其高度值会变化,会表现第二次输入的数值中 **/
Scattered mountains
//山的高度是散乱的 scattered: 散乱的
Game information:
Let’s destroy those mountains to secure our landing…
Height of mountain 0 : 9
Height of mountain 1 : 8
Height of mountain 2 : 7
Height of mountain 3 : 3
Height of mountain 4 : 6
Height of mountain 5 : 5
Height of mountain 6 : 2
Height of mountain 7 : 4
Strong mountains 1
//坚硬的山,有些山需要多打几次才会倒
Game information:
Let’s destroy those mountains to secure our landing…
Height of mountain 0 : 0
Height of mountain 1 : 6
Height of mountain 2 : 7
Height of mountain 3 : 5
Height of mountain 4 : 0
Height of mountain 5 : 8
Height of mountain 6 : 1
Height of mountain 7 : 0
Strong mountains 2
//坚硬的山,有些山需要多打几次才会倒
Game information:
Let’s destroy those mountains to secure our landing…
Height of mountain 0 : 0
Height of mountain 1 : 6
Height of mountain 2 : 0
Height of mountain 3 : 5
Height of mountain 4 : 0
Height of mountain 5 : 8
Height of mountain 6 : 0
Height of mountain 7 : 6
One mountain
//只有一座山,需要一直攻击它
Game information:
Let’s destroy those mountains to secure our landing…
Height of mountain 0 : 0
Height of mountain 1 : 0
Height of mountain 2 : 0
Height of mountain 3 : 8
Height of mountain 4 : 0
Height of mountain 5 : 0
Height of mountain 6 : 0
Height of mountain 7 : 0
通关程序
#include <iostream>#include <string>#include <vector>#include <algorithm>using namespace std;/** * The while loop represents the game. * Each iteration represents a turn of the game * where you are given inputs (the heights of the mountains) * and where you have to print an output (the index of the mountain to fire on) * The inputs you are given are automatically updated according to your last actions. **/int main(){ int imax = 0 ; //表示要射击山峰的编号 // game loop while (1) { int max = 0 ; //选出最高峰的高度 for (int i = 0; i < 8; i++) { int mountainH; // represents the height of one mountain. cin >> mountainH; cin.ignore (); if (mountainH > max) { max = mountainH; imax = i; } } // Write an action using cout. DON'T FORGET THE "<< endl" cout << imax << endl; // To debug: cerr << "Debug messages..." << endl; cerr << "Debug messages... " <<endl; // cout << "4" << endl; // The index of the mountain to fire on. }}
//你成功着陆!
- CodinGame: The Descent 反思
- CodinGame: Temperatures 反思
- CodinGame: Power of Thor 反思
- UVa 133 The Dole Queue 一些反思
- 反思
- 反思
- 反思
- 反思
- 反思
- 反思
- 反思
- 反思
- 反思
- 反思
- 反思
- 反思
- 反思
- 反思
- [推荐算法]UserCF,基于用户的协同过滤算法
- 总结5种比较高效常用的排序算法
- POJ 2373 Dividing the Path
- 排序算法总结(2)--插入排序
- 哈希曼的数据结构的代码(课堂代码)
- CodinGame: The Descent 反思
- 湖北民族学院oj 1889之 鹦鹉学舌
- 名企笔试:百度2017春招笔试真题编程题(买帽子)2017-05-17 算法爱好者
- Linux-10-vim编辑器
- 我与python约个会:18. 再说循环~列表和循环的高级操作
- python 自带函数 max min的灵活用法,enumerate函数
- Hibernate中,mappedBy和注解@JoinColumn的对比
- RxJava零基础入门(一)
- Java的数据类型体系