当前位置:编程学习 > C/C++ >>

输出蛇形数组

前几天做小米的笔试题,遇到一个蛇形数组的题目,让你编程输出如下类似的蛇形矩阵
 
1    2    6     7
3    5    8    13
4    9   12   14
10 11  15  16
 
 
 
 
#include<iostream>  
using namespace std;  
#define N 15  
  
int mat[N][N];  
int all;  
void getLayer(int x,int y) //根据下标的规律,一层一层输出  
{  
    int a=y,b=x;  
    mat[x][y]=all++;  
    if(x>a)  
    {  
        while(x!=a)  
        {  
            x--;  
            y++;  
            mat[x][y]=all++;  
        }  
    }  
    else  
    {  
        while(x!=a)  
        {  
            x++;  
            y--;  
            mat[x][y]=all++;  
        }  
    }  
}  
void changeLayer(int x,int y) //每次输出一层,则转下一层  
{  
    while(x<=N-1&&y<=N-1)  
    {  
        if(x<N-1&&y==0)  
            x++;  
        else if(x==0&&y<N-1)  
            y++;  
        else if(x==N-1&&y<N-1)  
            y++;  
        else if(x<N-1&&y==N-1)  
            x++;  
        getLayer(x,y);  
        if(x==N-1&&y==N-1)  
            break;  
        int tmp=x;  
        x=y;  
        y=tmp;  
    }  
}  
int main()  
{  
    mat[0][0]=1;  
    mat[0][1]=2;  
    mat[1][0]=3;  
    all=4;  
    changeLayer(1,0);  
    for(int i=0;i<N;i++)  
    {  
        for(int j=0;j<N;j++)  
            cout<<mat[i][j]<<"  ";  
        cout<<endl;  
    }  
    return 0;  
}  

 

 
 
补充:软件开发 , C++ ,
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,