C++输入正整数,输出1-n*n顺时针排列矩阵之动态分配

来源:互联网 发布:三唑仑淘宝上输什么 编辑:程序博客网 时间:2024/06/07 06:12
#include <iostream>#include <cstring>/*输入正整数n, 输出将1~n*n顺时针排列矩阵*/using namespace std;void DisplayMatrix(int *A, int n);int main(){    int     *A ;    int     n;    cin >> n;    A = new int [n*n];    memset (A, 0, n*n*sizeof (int));    enum DIRECTION {DOWN = 0, LEFT, UP, RIGHT} dir = DOWN;    int row, col, k;    row = 0; col = n - 1;    for ( k = 1; k <= n*n; k++) {        A [row*n+col] = k;        switch (dir) {        case DOWN :            if (row < n-1 && A [(row+1)*n+col] == 0) {                ++row;            } else {                --col; dir = LEFT;            }            break;        case LEFT :            if (col > 0 && A [row*n+col-1] == 0) {                --col;            } else {                --row; dir = UP;            }            break;        case UP :            if (row > 0 && A [(row-1)*n+col] == 0) {                --row;            } else {                ++col; dir = RIGHT;            }            break;        case RIGHT :            if (col < n-1 && A [row*n+col+1] == 0) {                ++col;            } else {                ++row; dir = DOWN;            }            break;        }    }    DisplayMatrix (A, n);    delete [] A;}void    DisplayMatrix (int *A, int n){    for (int row =0; row < n; ++row) {        for (int col = 0; col < n; ++col) {            cout.width (4);            cout << A [row*n+col];        }        cout << endl;    }}

阅读全文
0 0
原创粉丝点击