白駿2447

11309 ワード

私は自分で解決できないので、検索して、考えを確認して、自分で比較して実施しました.
ロジックはとっくに完了していますが、2 D配列の問題で時間がかかります.
既存のコードは次のとおりです.
int N; cin << N;
arr[N][N] = {'*',};	// 또는 만든 후 fill 함수로 채움
問題はパラメータとして渡すことができず、プロセス中にchar*pArrを使用してコンパイルエラーがなく、結果は1つのスペースしかありません.
この問題を解決するには、2 D配列定義セクションを末尾に長時間挿入した次のコードに置き換えます.
cin >> N;
   
char** arr = new char*[N];

for(int i=0; i<N; i++) {
    arr[i] = new char[N];
}

fill(&arr[0][0], &arr[N-1][N], '*');
なぜか分かりませんが、この部分を学ぶ必要があると思います.

完全なコード

#include <iostream>

using namespace std;

int N;

int star(char** arr, int n){
    if(n==1)
        return 0;
    
    star(arr, n/3);
    
    for(int i=0; i<N; i++) {
        for(int j=0; j<N; j++) {
            
            if( (i / (n / 3)) % 3 == 1 && (j / (n / 3)) % 3 ==1) {
                arr[i][j] = ' ';
            }
        }
    }
    return 0;
}

int main(void){
    cin >> N;
    
    char** arr = new char*[N];
    for(int i=0; i<N; i++) {
        arr[i] = new char[N];
    }
    
    fill(&arr[0][0], &arr[N-1][N], '*');
    
    star(arr, N);
    
    for(int i=0; i<N; i++) {
        for(int j=0; j<N; j++) {
            cout << arr[i][j];
        }
        cout << '\n';
    }
    
    return 0;
}