NetEase YouDao 矩阵问题

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

 

代码暂时没写,待续。。。

 

posted @ 2011-10-16 00:59  YipWingTim  阅读(268)  评论(0编辑  收藏  举报