C编程题2 - 蛇形矩阵

 616620131   2018-08-02 17:50   211 人阅读  0 条评论

题目描述

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

输入

本题有多组数据,每组数据由一个正整数N组成。(N不大于100)

输出

对于每一组数据,输出一个N行的蛇形矩阵。两组输出之间不要额外的空行。矩阵三角中同一行的数字用一个空格分开。行尾不要多余的空格。

样例输入

5

样例输出

1 3 6 10 15
2 5 9 14
4 8 13
7 12
11

参考答案

#include <stdio.h>
 
//N为总行数,rows为第几行,打印该行数据
void printN(int N, int rows)
{
    //确定第rows行的第一个元素的值:a(n) = a(n-1) + n - 1; a1 = 1;
    int first = 1;
    int i;
    for (i = 1; i <= rows; i++)
    {
        first += i - 1;
    }
 
    //第rows行的第一个元素为first
    int tmp = first;
    //第rows行的元素之间的增量inc从rows+1开始
    int inc = rows + 1;
    for (i = 1; i <= N - rows + 1; i++) //输出第rows行的元素,共有N-rows+1个
    {
        //输出元素时,该行最后一个元素后面没有空格符
        if (i < (N - rows + 1))
            printf("%d ", tmp);
        else
            printf("%d", tmp);
 
        tmp += inc; //每一个元素都是前一个元素加上inc
        inc++;      //inc++
    }
}
 
int main()
{
    int N;
    scanf("%d", &N);
 
    //输出N行数据
    int i;
    for (i = 1; i <= N; i++)
    {
        printN(N, i);
        printf("\n");
    }
 
    return 0;
}


本文由作者整理

参考资料:http://www.dotcpp.com/oj/problemset.php

本文地址:http://blog.xiaoruizd.com/post/20.html
版权声明:本文为原创文章,版权归 616620131 所有,欢迎分享本文,转载请保留出处!

 发表评论


表情

还没有留言,还不快点抢沙发?