网易有道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);
- #include <stdio.h>
- #include <stdlib.h>
- void AddMatrix(int n);
- int GetNum(int i, int j, int n);
- int main(int argc, char **argv)
- {
- if(argc != 2) {
- printf("Number is needed!\n");
- return -1;
- int n = atoi(argv[1]);
- AddMatrix(n);
- return 0;
- }
- void AddMatrix(int n)
- {
- int i = 0,j = 0;
- for(i = 0; i < n; i++) {
- if(j == n) printf("\n");
- for(j = 0; j < n; j++) {
- printf("%3d",GetNum(i,j,n));
- }
- }
- printf("\n");
- }
- int GetNum(int i, int j, int n)
- {
- if(!i || !j || i == n-1 || j == n-1) return 1;
- int leftj, rightj, upi, downi, oki, okj;
- int inum, jnum;
- leftj = j; rightj = n-j-1;
- upi = i; downi = n-i-1;
- oki = upi<downi ? i-1 : i+1;
- okj = leftj<rightj ? j-1 : j+1;
- jnum = GetNum(i,okj,n);
- inum = GetNum(oki,j,n);
- return inum+jnum;
- }
自己写完之后才发现。。。本来可以很简单的处理这个问题。。。
阅读(1149) | 评论(0) | 转发(0) |