[伯俊]星を撮る-10
8668 ワード
注意事項
デフォルトのタイプ
に答える
星を作成する関数と、星を出力する関数の2つの関数から構成されます.
すぐに星を印刷することはできません.→形がおかしくなる.そのため、後部座席で星を詰め、対応する後部座席を出力します.
星を作成する関数はy,xを基準に星を読み込みます.
sizeが1なら直接入れればいいです.
sizeが3 n 3^n 3 nの場合、(1≦n)この関数は8回呼び出される.真ん中は印刷しないからです.
コード#コード#
C++
#include <iostream>
#include <vector>
using namespace std;
void printStar(vector<vector<char>>& arr) {
int x_size = arr[0].size();
int y_size = arr.size();
for (int y = 0; y < y_size; y++) {
for (int x = 0; x < x_size; x++)
printf("%c", arr[y][x]);
printf("\n");
}
return;
}
void makeStar(vector<vector<char>>& arr, int y, int x, int size) {
if (size == 1) {
arr[y][x] = '*';
return;
}
int resize = size / 3;
for (int dy = 0; dy < 3; dy++) {
for (int dx = 0; dx < 3; dx++) {
if (dy == 1 && dx == 1)
continue;
makeStar(arr, y + dy * resize, x + dx * resize, resize);
}
}
}
int main() {
int N;
cin >> N;
vector < vector<char>> arr(N, vector<char>(N, ' '));
makeStar(arr, 0, 0, N);
printStar(arr);
}
Reference
この問題について([伯俊]星を撮る-10), 我々は、より多くの情報をここで見つけました https://velog.io/@6047198844/백준-별찍기-10テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol