Chinaunix首页 | 论坛 | 博客
  • 博客访问: 50561
  • 博文数量: 27
  • 博客积分: 716
  • 博客等级: 上士
  • 技术积分: 285
  • 用 户 组: 普通用户
  • 注册时间: 2011-08-31 11:12
文章分类

全部博文(27)

文章存档

2012年(8)

2011年(19)

我的朋友

分类: C/C++

2011-09-25 22:28:06

网易有道2008年实习招聘笔试题:
1.写一个函数,打印一个如下的n x n的矩阵
例如:
n = 5
1 1 1 1 1
1 2 3 2 1
1 3 6 3 1
1 2 3 2 1
1 1 1 1 1

n = 6
1 1 1 1 1 1
1 2 3 3 2 1
1 3 6 6 3 1
1 3 6 6 3 1
1 2 3 3 2 1
1 1 1 1 1 1

提示: 除了边上的元素,每个元素都是由边上的某两个元素相加得到的
void AddMatrix(int n);

  1. #include <stdio.h>
  2. #include <stdlib.h>

  3. void AddMatrix(int n);
  4. int GetNum(int i, int j, int n);

  5. int main(int argc, char **argv)
  6. {
  7.     if(argc != 2) {
  8.         printf("Number is needed!\n");
  9.         return -1;

  10.     int n = atoi(argv[1]);
  11.     AddMatrix(n);

  12.     return 0;
  13. }

  14. void AddMatrix(int n)
  15. {
  16.     int i = 0,j = 0;

  17.     for(i = 0; i < n; i++) {

  18.         if(j == n) printf("\n");

  19.         for(j = 0; j < n; j++) {
  20.             printf("%3d",GetNum(i,j,n));
  21.         }
  22.     }
  23.     printf("\n");
  24. }

  25. int GetNum(int i, int j, int n)
  26. {
  27.     if(!i || !j || i == n-1 || j == n-1) return 1;

  28.     int leftj, rightj, upi, downi, oki, okj;
  29.     int inum, jnum;

  30.     leftj = j; rightj = n-j-1;
  31.     upi = i; downi = n-i-1;

  32.     oki = upi<downi ? i-1 : i+1;
  33.     okj = leftj<rightj ? j-1 : j+1;

  34.     jnum = GetNum(i,okj,n);
  35.     inum = GetNum(oki,j,n);

  36.     return inum+jnum;
  37. }
自己写完之后才发现。。。本来可以很简单的处理这个问题。。。
阅读(1149) | 评论(0) | 转发(0) |
0

上一篇:elf格式

下一篇:全排列--递归

给主人留下些什么吧!~~