Build Tower -- 6 Kyu

原题

https://www.codewars.com/kata/576757b1df89ecf5bd00073b/train/cpp

题目

Build Tower by the following given argument:
number of floors (integer and always greater than 0).
Tower block is represented as *
or example, a tower of 3 floors looks like below

[
  "  *  ", 
  " *** ", 
  "*****"
]

分析

实现比较简单,思路也有很多种。
本解法,先是构建了n层的空格字符串数组,再按照每层*的位置和长度进行填充覆盖。
所有解法都需要确定以下两个关系:

  1. 层数n与每个字符串长度l的关系:l = 2*n-1;
  2. 层数n与每个非空格字符位置的关系:n-i-1

上面两个关系可以使用数学归纳法非常简单的推导出来。

参考答案

#include 
#include 
#include 

using namespace std;

class Kata{
public:
    vector towerBuilder(int nFloors){
        size_t len = 2*nFloors-1;
        vector res(nFloors,string(len,' '));
        for(size_t i=0;i

说明

容器初始化时可以指定初始化值,这样可以避免另外的复制操作。

其它

你可能感兴趣的:(Build Tower -- 6 Kyu)