蛇形矩阵

蛇形矩阵

题目来源牛客网
时间限制:1秒
空间限制:32768K

题目描述

题目说明

蛇形矩阵是有1开始的自然数依次排列成的一个上三角矩阵.

样例输入:

5

样例输出:
1 3 6 10 15
2 5 9 14
4 8 13
7 12
11

接口说明

原型

void GetResult(int Num, char * pResult);

输入参数:

int Num :输入的正整数N

输出参数:

int *pResult: 指向放蛇形矩阵的字符串指针指针指向的内存区域保证有效

返回值:

void

输入描述

输入正整数N(N不大于100)

输出描述

输出一个N行的蛇形矩阵.

输入例子

4

输出例子

1 3 6 10

2 5 9

4 8

7

Answer


#include <stdio.h>
#include <stdlib.h>
#include <string.h>

void GetResult(int n, int * matrix);
void printResult(int n, int* matrix);
void zeros(int n, int* matrix);

int main(int argc, char **argv)
{

    int n;

    while(scanf("%d",&n)!=EOF){
        int *matrix = (int*)malloc(sizeof(int)*n*n);
        GetResult(n, matrix);
    	printResult(n, matrix);
        free(matrix);
    }
    return 0;
}

void GetResult(int n, int * matrix)
{
    /*initialize as zero*/
    zeros(n, matrix);
    int counter = 1;
    int i,j;
    for(i=1; i <= n; i++){
        for(j=0; j<i;j++){
            *(matrix+(i-1)*n+j) = counter++;
        }
    }

}

void printResult(int n, int* matrix)
{
    int i,j;
    for(j=0; j<n; j++){
        for(i=j; i<n-1; i++){
            printf("%d ", *(matrix+i*n+i-j));
        }
        printf("%d", *(matrix+i*n+i-j));
        printf("\n");
    }
}
void zeros(int n, int *matrix)
{
    int i,j;
    for(i=0; i<n;i++){
        for(j=0; j<n;j++){
            *(matrix+i*n+j)=0;
        }
    }
}
posted @ 2016-08-30 19:15  永久指针  阅读(601)  评论(0编辑  收藏  举报