c语言之蛇形填数

一、题目要求
如下图所示,小明用从1开始的正整数“蛇形”填充无限大的矩阵。容易看出矩阵第二行第二列中的数是5。请你计算矩阵中第20行第20列的数是多少?

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

二、题目分析

将题目中所给数字图像倾斜得到如下图所示的图像

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

 可以看到    1行1列=1    最大 =1*1

                   2行2列=5     最大=2*3

                   3行3列=13   最大=3*5

                 ........................

            20行20列=20*2-1=39

解决了数的位置问题,现在找相应规律,来算出20行20列的数值,可以发现每行的最大的一位数等于其在上图三角形层数乘以行数或列数。

三、根据上述分析,可以写出以下代码:

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

int main()
{
    int n = 20;
    int sum = 0;
    int ans = 0;
    sum = (n*2-1)*20;
    ans = sum-(n-1);
    printf("ans=%d\n",ans);
    return 0;
}

代码及运行结果

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值