返回题解分享
讨论 / 题解分享/ 帖子详情

蛇形填数2 - 题解

#include<iostream>
#include<vector>
#include<iomanip>

using namespace std;

int main() {
    int m, n;
    int num = 1;
    int flag = 1;
    cin >> m >> n;
    int x = 0, y = n - 1;

    vector<vector<int>> arr(m, vector<int>(n, 0)); 
  
    for(int i = 0; i < m * n; i++)  {
        arr[x][y] = num++;
        if(flag == 1) {
            if(x < m - 1 && arr[x + 1][y] == 0) {
                x++;
            } else {
                flag = 2;
                y--;
            }
        } else if(flag == 2) {
            if(y > 0 && arr[x][y - 1] == 0) {
                y--;
            } else {
                flag = 3;   
                x--;
            }
        } else if(flag == 3 ) {
            if(x > 0 && arr[x - 1][y] == 0) {
                x--;
            } else {
                flag = 4;
                y++;
            }
        } else if(flag == 4) {
            if(y < n - 1 && arr[x][y + 1] == 0) { 
                y++;
            } else {
                flag = 1;
                x++;
            }
        }
        
    }
    for(int i = 0; i < m; i++) {
        for(int j = 0; j < n; j++) {
            printf("%5d", arr[i][j]);
        }
        cout << endl;
    }
    return 0;
}
0 回复 0 转发 0 喜欢 1 阅读
回复 (0)
默认 最新
暂无回复,快来抢沙发!