标题:蛇形矩阵求解析
只看楼主
学跑步的少年
Rank: 1
等 级:新手上路
帖 子:39
专家分:5
注 册:2018-3-6
结帖率:83.33%
已结贴  问题点数:2 回复次数:8 
蛇形矩阵求解析
#include<stdio.h>
#define N 20
main()
{
    int a[N][N]={0};
    int t,j,k,l,m,n,i;
    printf("请输入矩阵的大小:\n");
    scanf("%d",&t);l=t;
    for(j=0;j<t;j++)
    {
        m=j+1;n=j;
        for(k=0;k<l;k++)
        {
            if(k>0)
                a[j][k]=a[j][k-1]+m;
            else if(j>0) a[j][k]=a[j-1][k]+n;
            else  a[j][k]=1;
            m++;
            printf("%4d",a[j][k]);
        }
        l--;
        printf("\n");
    }
}
搜索更多相关主题的帖子: 矩阵 解析 int printf for 
2018-03-07 09:46
学跑步的少年
Rank: 1
等 级:新手上路
帖 子:39
专家分:5
注 册:2018-3-6
得分:0 
大神,求解答!!
2018-03-07 12:48
学跑步的少年
Rank: 1
等 级:新手上路
帖 子:39
专家分:5
注 册:2018-3-6
得分:0 
自顶!!
2018-03-07 12:48
李晨经纪人
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:6
帖 子:175
专家分:848
注 册:2018-2-14
得分:2 
#include<stdio.h>
#define N 20
main()
{
    int a[N][N]={0};                        
    int t,j,k,l,m,n,i;
    printf("请输入矩阵的大小:\n");
    scanf("%d",&t);l=t;                    
    for(j=0;j<t;j++)                                 //  输出t行
    {
        m=j+1;n=j;                                   //定义两个变量m和n。
        for(k=0;k<l;k++)                             //每行输出l个数,结合后面的l--,每行比上一行少一个数
        {
            if(k>0)                                  //从第二列开始每个数是这一行前一列数字加上m。
                a[j][k]=a[j][k-1]+m;                 // 因为你这程序所描述的矩阵实际上是从左到右按45°向上依次递增。所以第一层循环中的m=j+1,实现了
            else if(j>0) a[j][k]=a[j-1][k]+n;        //a[j][k-1]向右上方数到第一行,就是a[j][k-1]所在的行数,结合下面的m++,m就是a[j][k]所在的(前面的
            else  a[j][k]=1;                         //列数(k)+所在的行数(j+1))。
            m++;                                     //else  if(j>0) a[j][k]=a[j-1][k]+n; 这句话从第二行开始每一行的第一个数都是上一行的第一个数+他所在行
            printf("%4d",a[j][k]);                   //数-1就是+j
        }                                            //else  a[j][k]=1;表示第一行第一列a[0][0]=1
        l--;                                         //l--,实现每一行比上一行少输出一个数   
        printf("\n");                                //每输出一行换行
    }
}
2018-03-07 16:44
学跑步的少年
Rank: 1
等 级:新手上路
帖 子:39
专家分:5
注 册:2018-3-6
得分:0 
回复 3楼 学跑步的少年
感谢大佬
2018-03-07 16:45
学跑步的少年
Rank: 1
等 级:新手上路
帖 子:39
专家分:5
注 册:2018-3-6
得分:0 
回复 4楼 李晨经纪人
感谢大佬的帮助!
2018-03-07 16:47
李晨经纪人
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:6
帖 子:175
专家分:848
注 册:2018-2-14
得分:0 
把程序里的m,n,i都删除。
if(k>0)
      a[j][k]=a[j][k-1]+j+k+1;
else if(j>0) a[j][k]=a[j-1][k]+j;
效果一样
2018-03-07 16:48
学跑步的少年
Rank: 1
等 级:新手上路
帖 子:39
专家分:5
注 册:2018-3-6
得分:0 
好的,我试试。
2018-03-07 16:49
学跑步的少年
Rank: 1
等 级:新手上路
帖 子:39
专家分:5
注 册:2018-3-6
得分:0 
好的,我试试。
2018-03-07 16:49



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-485062-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.239687 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved