756. 蛇形矩阵

模拟,设置偏移量
先往右,再往下,在往左,再往上,依次循环。

int dx[4]={0,1,0,-1};
int dy[4]={1,0,-1,0};
//
//  main.cpp
//  756. 蛇形矩阵
//
//  Created by 翁一帆 on 2019/5/23.
//  Copyright © 2019 mouweng. All rights reserved.
//

#include 
#include 

using namespace std;

const int N = 110;
int map[N][N];
bool res[N][N];

int main(){
    
    int n,m;
    scanf("%d %d",&n,&m);
    
    int dx[4]={0,1,0,-1};
    int dy[4]={1,0,-1,0};
    
    int x=0,y=0,d=0;
    for(int i=1;i<=n*m;i++){
        int nx=x+dx[d];
        int ny=y+dy[d];
        if(nx<0 || nx>=n ||ny<0 || ny>=m || res[nx][ny]){
            d=(d+1)%4;
            nx=x+dx[d];ny=y+dy[d];
        }
        
        map[x][y]=i;
        res[x][y]=1;
        
        x=nx;y=ny;
        
    }
    for(int i=0;i

你可能感兴趣的:(756. 蛇形矩阵)