腾讯机试模拟题(蛇形矩阵)

来源:互联网 发布:书里的句子 知乎 编辑:程序博客网 时间:2024/06/15 20:19

腾讯机试模拟题(蛇形矩阵)

蛇形矩阵示例:
整数3对应的蛇形矩阵为:
1 2 3
8 9 4
7 6 5
整数4对应的蛇形矩阵为:
1—2 – 3–4
12 13 14 5
11 16 15 6
10 –9– 8 -7


全部代码:

// Source: 腾讯公司模拟编程题// Author: Yang Qiang// Date  : 2016/9/2// 题目: 按行输出蛇形矩阵// 示例: [1 2 3//        4 5 6//        7 8 9]#include<iostream>using namespace std;int main(){    int n;    while(cin>>n)    {        //检测不合理输入        if(n<=0) return 0;        int **max=new int*[n]; //建立二维数组        bool **maxflag=new bool*[n]; //建立标志矩阵        for(int i=0; i<n; i++)        {            max[i]=new int[n];            maxflag[i]=new bool[n];        }        //标志矩阵初始化        for(int i=0; i<n; i++)            for(int j=0; j<n; j++)                maxflag[i][j]=0;        //蛇形存入数字        int num=1,row=0,col=0;        while(num<=n*n)        {            while(row>=0 && col>=0 && col<n && row<n && maxflag[row][col]==0 )            {                max[row][col]=num++; //向右                cout<<max[row][col];                maxflag[row][col]=1; //更改标志位                col++;            }            col--;row++;            while(row>=0 && col>=0 && col<n && row<n && maxflag[row][col]==0 )            {                max[row][col]=num++; //向下                cout<<max[row][col];                maxflag[row][col]=1; //更改标志位                row++;            }            row--;col--;            while(row>=0 && col>=0 && col<n && row<n && maxflag[row][col]==0 )            {                max[row][col]=num++; //向左                cout<<max[row][col];                maxflag[row][col]=1; //更改标志位                col--;            }            col++;row--;            while(row>=0 && col>=0 && col<n && row<n && maxflag[row][col]==0 )            {                max[row][col]=num++; //向上                cout<<max[row][col];                maxflag[row][col]=1; //更改标志位                row--;            }            row++;col++;        }        cout<<endl;        //按行输出蛇形矩阵        for(int i=0; i<n; i++)            for(int j=0; j<n; j++)                cout<<max[i][j];        cout<<endl;    }}

说明
1.需要改进的地方:可以只用一个矩阵,初始化为0即可。无需设置标志矩阵

0 0
原创粉丝点击