矩阵游戏(杨辉三角的应用)

题意为:一个n✲n的矩阵,从左上角开始,只能向下或向右移动,求解到达右下角有几种运动方案。
运动的过程假设可以把每停留的位置都有一个参数表示从最左上角到该位置的方案个数,则有如下情况:

最左边和最上边的位置,可以达到该位置的方案只有一个,如图:

这是一个3✲3的矩阵的方案。可以先确定两个边上的具体数值

每个点都有一个参数,可以将每个点按照位置来确定位置关系与系数关系:

如图所示,已知一个位置点的上面位置参数为2,左边参数为5,那么该点的参数值便也可以确定为2+5=7。推理:
由于一个位置只能向下走或者向右走,那么该位置的得到由其上方的位置或左边的位置向下或向右得到,如果是前者,有2种情况,后者,有5种情况,那么所有情况就是这两种的和。
已知这个规律,便可以在上面的方格中填充正确的数字了:

假设n=2,那么从左上角到右下角的方案个数正为6,可以做出以下推断:在n✲n的矩阵中,由于每一行共有n+1条线,共有n+1行,则可以列出一个a[n+1][n+1]的二维数组来存放每个点的相关参数,而a[n+1][n+1]即为所求值。
每个点a[i][j]=a[i-1][j]+a[i][j-1],表示两个相邻参数的和,以下图为杨辉三角的图像,我们可以借此图看出每个位置参数之间的关系

根据以上思路整理得代码如下:

#include <stdio.h>
#define MAX 20

void main()
{
    int a[MAX][MAX]={0};
    int i,j,n;
    scanf("%d",&n);
    for (i=0;i<=n;i++)
        a[i][0]=a[0][i]=1;
    for (i=1;i<=n;i++)
        for (j=1;j<=n;j++)
            a[i][j]=a[i-1][j]+a[i][j-1];
        printf("%d\n",a[n][n]);
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 背景 一年多以前我在知乎上答了有关LeetCode的问题, 分享了一些自己做题目的经验。 张土汪:刷leetcod...
    土汪阅读 14,354评论 0 33
  • 一、实验目的 学习使用 weka 中的常用分类器,完成数据分类任务。 二、实验内容 了解 weka 中 explo...
    yigoh阅读 12,768评论 5 4
  • 内心的丰盛 身体情绪的丰盛
    紫贝壳张翠萍阅读 903评论 0 0
  • 世界读书日那天,我看见朋友圈的一条“测测你来自哪本书”的链接,就跟风似的答了题,最后结果显示:源于”苦涩的爱河“—...
    鱼小婧阅读 3,652评论 4 3
  • 你什么都不懂我,深夜我又在哭泣,我知道电话那头的你,已经习惯了这种争吵,可能我刚挂,你就鼾声四起了,而我看着窗外这...
    也孤独也灿烂阅读 2,383评论 0 0