蛇形矩阵

Posted by Johnnwen on April 3, 2016

给定一整数n,输出n阶蛇形巨阵的如下形式

例如

三阶蛇形巨阵如下所示

1 2 3
8 9 4
7 6 5

则输出

1 2 3 8 9 4 7 6 5

代码如下

#include <iostream>
#include <vector>
using namespace std;

int  main(int argc, const char * argv[]) {
    int n =0;
    cin>>n;
    int beginX = 0;
    int beginY = 0;
    int endX = n-1;
    int endY = n-1;
    int count = 1;
    int **p= new int*[n];
    for(int i=0;i<n;i++)
    {
        p[i]=new int[n];
    }
    
    while(true){
        for(int i = beginX;i<=endX;i++){
            p[beginY][i] = count;
            count++;
            
        }
        
        beginY++;
        if(beginY > endY){
            break;
        }
        
        
        for(int i = beginY;i<=endY;i++){
            p[i][endX] = count;
            count++;
        }
        
        endX--;
        if(beginX > endX){
            break;
        }
        
        for(int i = endX; i>=beginX;i--){
            p[endY][i] = count;
            count++;
        }
        
        endY--;
        if(beginY > endY){
            break;
        }
        for(int i = endY;i>=beginY;i--){
            p[i][beginX] = count;
            count++;
        }
        beginX++;
        if(beginX > endX){
            break;
        }

    }


    for(int i = 0;i < n;i++){
        for(int j = 0;j<n;j++){
            cout<<p[i][j]<<" ";
        }
    }

    return 0;
}