首页 > 解决方案 > C++ 中的 Hackerrank 楼梯

问题描述

我正在尝试在 C++ 中使用和使用和解决这个问题std::coutsetwsetfill

我原来的代码是这样的:

void staircase(int n) {
    for(int i = 0; i < n; i++) {
        cout << setfill(' ') << setw(n-(i+1));
        cout << setfill('#') << setw(i+1) << '#'<< endl;
    }
}

这不会打印出右对齐#字符的空格。我将它添加到输出缓冲区cout << setfill(' ') << setw(n-(i+1)) << ' ';并打印空格字符,但对于最后一行它打印空格字符。

有什么setw我想念的吗?

标签: c++

解决方案


您需要打印出某些东西或第二个setfillsetw替换第一个。例如:

#include <iostream>
#include <string>
#include <iomanip>

using namespace std;

void staircase(int n) {
    for(int i = 0; i < n; i++) {
        cout << setfill(' ') << setw(n-(i+1)) << '|';
        cout << setfill('#') << setw(i+1) << '#'<< endl;
    }
}

int main(void)
{
    staircase(4);
}

打印出来

  |#
 |##
|###
|####

你需要做的就是打印出比 | 更有用的东西,比如 #,并修正你的对齐数学。


推荐阅读