/* 题目:显示如下矩阵 0 1 2 3 4 0 1 3 4 10 11 1 2 5 9 12 19 2 6 8 13 18 20 3 7 14 17 21 24 4 15 16 22 23 25 思路:矩阵题你用大脑知道他是什么样的规律,也就是用你自己的大脑能把阵矩画来,但就是用代码写不出来。这个蛇形,第一眼看去, 不知道该怎么安排循的方向和条件。但是你只能仔细模拟大脑画出矩阵的思维,一步一步写。个人意思。 */ #include <iostream> using namespace std; int main() { int const N=9; //只能是奇数 int a[N][N]; int i=0,j=0; int k=1; a[i][j]=k; //a[0][0]的值为1 while(1) { i++; //下移一位 i值增加 a[i][j]=++k; //依次给k++ do { i--;j++; //向矩阵右上方呈斜线上升循环将k值加1 i-- j++ a[i][j]=++k; } while(i!=0); //斜线最上方停止循环。 j++; //给右边的那一位赋值 a[i][j]=++k; do //向矩阵左下方呈斜线下降 k值持续增加 i++ j-- { i++;j--; a[i][j]=++k; } while (j!=0); if(i==N-1&&j==0) //到当达矩阵左下方时 停止循环。 break; } while(1) { j++; a[i][j]=++k; do { i--;j++; a[i][j]=++k; } while (j!=N-1); i++; a[i][j]=++k; if(k==N*N) break; do { i++;j--; a[i][j]=++k; } while (i!=N-1); } for(i=0;i<N;i++) //显示矩阵 for(j=0;j<N;j++) { cout<<a[i][j]<<"/t"; if(j==N-1) cout<<endl; } return 0; }