输出蛇形数组
前几天做小米的笔试题,遇到一个蛇形数组的题目,让你编程输出如下类似的蛇形矩阵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++ ,