zoukankan      html  css  js  c++  java
  • 蛇形矩阵

    题目描述
    蛇形矩阵是由1开始的自然数依次排列成的一个矩阵上三角形
    输入
    本题有多组数据,每组数据由一个正整数N组成。(N不大于100)
    输出
    对于每一组数据,输出一个N行的蛇形矩阵。两组输出之间不要额外的空行。矩阵三角中同一行的数字用一个空格分开。行尾不要多余的空格。
    样例输入
    5
    
    
    样例输出
    1 3 6 10 15
    2 5 9 14
    4 8 13
    7 12
    11
    c++解法如下:
    #include <iostream>
    using namespace std;
    int main()
    {
       const int N = 101;
       int arrary[N][N];/**存储蛇形矩阵*/
       int i,j;
       int n,num,cnt;
       for(i=0;i<N;i++)
       {
       for(j=0;j<N;j++)
       arrary[i][j]=0;
       }
        arrary[0][0]=1;  
       cin >> n;
       cnt = n-1;
       num = n*(n+1)*0.5;
       for(i=0;i<n;i++)
       {
           for(j=0;j<n;j++){
            if(i+j==cnt)   arrary[i][j]=num--;
             
            if(i+j==cnt&&j==0)
            {
                cnt--;
                i=0;j=0;
            }
           }
       
        for(i=0;i<n;i++)
        {
            for(j=0;i+j<=n-1;j++)
            {
        if(i+j<=n-1&&i+j+1>n-1)
                cout << arrary[i][j] ;
                else
                cout << arrary[i][j] << " ";
            }
            cout << " ";
        }
        //cout << "Hello world!" << endl;
     
        return 0;
    }

     第二种蛇形:

    #include <iostream>
    #include "cmath"
    using namespace std;
    /*
    *作者:浅滩
    *类型:蛇形矩阵(蓝桥杯普及题)
    *修改时间:2019.1.29
    *题目描述:蛇形矩阵是由1开始的自然数依次排列成的一个矩阵上三角形。
    *程序不足:用到了数组浪费了很多的空间
    */
    /*
    与之前蛇形矩阵有一点不同 
    1 2 6 7 15
    3 5 8 14
    4 9 13
    10 12
    11
    */
    const int N = 101;
    int arrary[N][N];
    void deal(int &num,int flag,int &cnt,int n)
    {
    int i,j;
    if(flag==1)
    {
           for(i=0;i<n;i++){
           for(j=0;j<n;j++){
           if(i+j==cnt)   arrary[i][j]=num--;
    
           if(i+j==cnt&&j==0)//一斜行赋值完毕
            {
            cnt--; return;
            }
           }  
           }
    }
    else
    {
           for(i=n-1;i>=0;i--){
           for(j=0;j<n;j++){
           if(i+j==cnt)   arrary[i][j]=num--;
    
           if(i+j==cnt&&i==0)//一斜行赋值完毕
            {
            cnt--; return;
            }
           }  
           }            
        
    }
        
    }
    int main()
    {
       
       int i,j;
       int n,num,cnt;
       for(i=0;i<N;i++)
       {
           for(j=0;j<N;j++)
           arrary[i][j]=0;
       }
       
        cin >> n;
        cnt = n-1;
        num = n*(n+1)*0.5;
        for(i=n-1;i>=0;i--)
        {
            deal(num,pow(-1,i),cnt,n);
        }
    
        for(i=0;i<n;i++)
        {
            for(j=0;i+j<=n-1;j++)
            {
                if(i+j<=n-1&&i+j+1>n-1)
                cout << arrary[i][j] << "
    ";
                else
                cout << arrary[i][j] << " ";
            }
    
        }
         
    
        return 0;
    }
    不一样的烟火
  • 相关阅读:
    什么是ORM
    ORM优缺点
    Azure 中快速搭建 FTPS 服务
    连接到 Azure 上的 SQL Server 虚拟机(经典部署)
    在 Azure 虚拟机中配置 Always On 可用性组(经典)
    SQL Server 2014 虚拟机的自动备份 (Resource Manager)
    Azure 虚拟机上的 SQL Server 常见问题
    排查在 Azure 中新建 Windows 虚拟机时遇到的经典部署问题
    上传通用化 VHD 并使用它在 Azure 中创建新 VM
    排查在 Azure 中新建 Windows VM 时遇到的部署问题
  • 原文地址:https://www.cnblogs.com/cstdio1/p/10902937.html
Copyright © 2011-2022 走看看