C语言输出蛇形矩阵

写在前面:这里是小王成长日志,一名在校大学生,想在学习之余将自己的学习笔记分享出来,记录自己的成长轨迹,帮助可能需要的人。欢迎关注与留言。

题目:

题目链接:https://www.dotcpp.com/oj/problem1097.html

题目 1097: 蛇行矩阵

时间限制: 1Sec 内存限制: 64MB 提交: 6903 解决: 4643

题目描述
蛇形矩阵是由1开始的自然数依次排列成的一个矩阵上三角形。
输入
本题有多组数据,每组数据由一个正整数N组成。(N不大于100)
输出
对于每一组数据,输出一个N行的蛇形矩阵。两组输出之间不要额外的空行。矩阵三角中同一行的数字用一个空格分开。行尾不要多余的空格。
样例输入
5

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

C语言解法

这道题主要就是去找蛇形矩阵的规律,可以发现每一行的元素是其前一个元素加上行数(0开始)加上列数(0开始)再加上1
每一行第一个元素是上一行第一个元素加上当前行数(0开始)
注意在这道题里我是生成了一个100阶的蛇形矩阵,然后再根据N输出这个100阶矩阵的部分,但是并不需要,可以直接生成N阶即可,我这么做是因为一开始看错了题,以为有多个测试数据,稍微改改就可以了,很简单的

#include <stdio.h>
int main()
{
   int n;
   int mt[100][100];
   mt[0][0] = 1;
   for (int i = 0; i < 100; i++)
   {
      for (int j = 0; j < 100 - i; j++)
      {
         if (j == 0 && i > 0)
            mt[i][j] = mt[i - 1][j] + i; //赋值首元素
         else if (j != 0 || i != 0)//避免mt[0][0]遭覆盖
            mt[i][j] = mt[i][j - 1] + i + j + 1;
      }
   }

   scanf("%d", &n);
   //打印
   for (int i = 0; i < n; i++)
   {
      for (int j = 0; j < n - i; j++)
      {
         printf("%d", mt[i][j]);
         if (j != n - i - 1)
            printf(" ");
      }
      printf("\n");
   }
}


都看到这里了,各位哥哥姐姐叔叔阿姨给小王点个赞 关个注 留个言吧,和小王一起成长吧,你们的关注是对我最大的支持。
有事没事进来看看吧 : 小王的博客目录索引
C语言专栏看这 : C语言学习专栏


如果以上内容有任何不准确或遗漏之处,或者你有更好的意见,就在下面留个言让我知道吧-我会尽我所能来回答。

评论 3 您还未登录,请先 登录 后发表或查看评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:黑客帝国 设计师:我叫白小胖 返回首页

打赏作者

北北..

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值