#55540: c++ 解答


61247091s@gapps.ntnu.edu.tw (wei)


方法一: for迴圈直接讓陣列長大即可

#include <bits/stdc++.h>
using namespace std;

int r, c, tr, tc;
int org[15][15];

int main() {
    cin >> r >> c >> tr >> tc;
    for (int i = 0; i < r; i++) {
        for (int j = 0; j < c; j++) cin >> org[i][j];}

    for (int i = 0; i < r; i++) {
        for (int step_r = 0; step_r < tr; step_r++) {
            for (int j = 0; j < c; j++) {
                for (int step_c = 0; step_c < tc; step_c++) {
                    cout << org[i][j] << " ";
                }
            }
            cout << "\n";
        }
    }
    return 0;
}

 

方法二: 一開始想太複雜寫的遞迴法(可ac 但是很慢)

#include <bits/stdc++.h>
using namespace std;

int r,c,tr,tc;

int nw[105][105];
int org[15][15];

void dfs(int curr,int curc,int limr,int limc,int num){
    if(curr>limr||curc>limc||curr<0||curc<0)return;
    nw[curr][curc]=num;
    dfs(curr+1,curc,limr,limc,num);
    nw[curr][curc]=num;
    dfs(curr,curc+1,limr,limc,num);

    return;
}

int main(){
    cin>>r>>c>>tr>>tc;
    for(int i=0;i<r;i++){
        for(int j=0;j<c;j++)cin>>org[i][j];
    }
    memset(nw,-1,sizeof(nw));
    for(int i=0;i<r*tr;i++){
        for(int j=0;j<c*tc;j++){
            if(nw[i][j]==-1)dfs(i,j,i+tr-1,j+tc-1,org[i/tr][j/tc]);
        }
    }
    for(int i=0;i<r*tr;i++){
        for(int j=0;j<c*tc;j++){cout<<nw[i][j]<<" ";}cout<<endl;}
    return 0;
}