Chinaunix首页 | 论坛 | 博客
  • 博客访问: 624730
  • 博文数量: 79
  • 博客积分: 848
  • 博客等级: 军士长
  • 技术积分: 1800
  • 用 户 组: 普通用户
  • 注册时间: 2012-06-26 19:30
文章分类

全部博文(79)

文章存档

2015年(4)

2013年(39)

2012年(36)

分类: C/C++

2012-10-31 22:47:10

今天,听人讲起了今年微软的面试题,其中有一道就是让你输出一个螺旋型的矩阵。一时兴起就写了一个,贴在这里晒一晒吧!

点击(此处)折叠或打开

  1. #include<iostream>
  2. #include<iomanip>
  3. using namespace std;
  4. #define n 5                       //矩阵行数
  5. #define m 10                      //矩阵列数
  6. int main()
  7. {
  8.     int a[n][m];
  9.     int counter = 1;
  10.     int i = 0;
  11.     int j = 0;
  12.     int k = 0;
  13.     int l = 0;
  14.     int s = 0;
  15.     for(i = 0; i < n; i++)        //初始化矩阵的值
  16.     {
  17.         for(j = 0; j < m; j++)
  18.         {
  19.             a[i][j] = 0;
  20.         }
  21.     }
  22.     for(i = 0; i < n; i++)
  23.     {
  24.         for(j = i; j < m - i; j++)//赋值上横一线
  25.         {
  26.             if(a[i][j] == 0)      //判断是否已被赋值
  27.             {
  28.                 a[i][j] = counter;
  29.                 counter++;
  30.             }
  31.         }
  32.         for(k = i + 1; k < n - i; k++)//赋值右竖一线
  33.         {
  34.             if(a[k][j - 1] == 0)
  35.             {    
  36.                 a[k][j - 1] = counter;
  37.                 counter++;
  38.             }
  39.         }
  40.         for(l = j - 2; l >= i; l--)//赋值下横一线
  41.         {
  42.             if(a[k - 1][l] == 0)
  43.             {
  44.                 a[k - 1][l] = counter;
  45.                 counter++;
  46.             }
  47.         }
  48.         for(s = k - 2; s > i; s--)//赋值左竖一线
  49.         {
  50.             if(a[s][l + 1] == 0)
  51.             {
  52.                 a[s][l + 1] = counter;
  53.                 counter++;
  54.             }
  55.         }
  56.     }
  57.     for(i = 0; i < n; i++)        //输出矩阵
  58.     {
  59.         for(j = 0; j < m; j++)
  60.         {
  61.             cout<< setw(3) << a[i][j] << " ";
  62.         }
  63.         cout << endl;
  64.     }
  65.     return 0;
  66. }

点击(此处)折叠或打开

  1. mini@mini-ThinkPad-T420:~/unixtest$ ./a.out
  2.   1 2   3 4   5  6  7  8  9 10
  3.  26 27 28 29 30 31 32 33 34 11
  4.  25 44 45 46 47 48 49 50 35 12
  5.  24 43 42 41 40 39 38 37 36 13
  6.  23 22 21 20 19 18 17 16 15 14




阅读(2825) | 评论(1) | 转发(1) |
给主人留下些什么吧!~~

最大行业软件2012-11-02 16:48:45

Nonlinear.Dynamics.TotalLab.TL120.v2009
NucleusUDB.v4.3
NUKED-Speedikon.W.Architektur.2.v6.021
O-Matrix.v6.0
Okino_Products_Suite_v4.12
OKINO.POLYTRANS.V4.2.1
One.DNC.v2.0.5.0
onecnc.one2000.design_v4.22
OneCNC.One2000.Lathe_v4.22
OneCNC.One2000.Mill.Production_v4.22
OneCNC.One2000.Mill.Professional_v4.22
OneCNC.One2000.Nesting_v4.22
OneCNC.One2000.Profiler_v4.22
OnyxTREE_PROFESSIONAL_Suite_v6
OPEL.