1.打印蛇形矩阵
刚刚写了一下这道题,主要是控制循环语句,思路清晰了代码自然就漂亮了。
View Code
1 #include<iostream>
2 using namespace std;
3
4 #define N 5
5 int a[N][N];
6
7 int main()
8 {
9 int num=0;
10 bool flag=true; //flag控制添斜线的上下的方式,每次打印完一个斜线改变一下
11 for(int slopline=0; slopline<=N-1; ++slopline) //slopline控制斜线,总共打印2N-1个斜线,这是打印左上半个矩阵
12 {
13 if(flag) //上
14 {
15 for(int row=0,col=slopline; col>=0; ++row,--col) //具体打印每个斜线
16 a[row][col]=++num;
17 flag=!flag;
18 }
19 else //下
20 {
21 for(int row=slopline,col=0; row>=0; --row,++col)
22 a[row][col]=++num;
23 flag=!flag;
24 }
25 }
26
27 for(int slopline=N; slopline<=2*N-2; ++slopline) //打印右下半个矩阵
28 {
29 if(flag)
30 {
31 for(int row=slopline-N+1,col=N-1; row<=N-1; ++row,--col)
32 a[row][col]=++num;
33 flag=!flag;
34 }
35 else
36 {
37 for(int row=N-1,col=slopline-N+1; col<=N-1; --row,++col)
38 a[row][col]=++num;
39 flag=!flag;
40 }
41 }
42
43 for(int i=0; i<N; ++i)
44 {
45 for(int j=0; j<N; ++j)
46 cout<<a[i][j]<<" ";
47 cout<<endl;
48 }
49 }
2.网易有道笔试题。
打印如下形式的矩阵;
n=5:
1 2 9 10 25
4 3 8 11 24
5 6 7 12 23
16 15 14 13 22
17 18 19 20 21
n=6:
1 2 9 10 25 26
4 3 8 11 24 27
5 6 7 12 23 28
16 15 14 13 22 29
17 18 19 20 21 30
36 35 34 33 32 31
代码暂时没写,待续。。。