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;
    }
    不一样的烟火
  • 相关阅读:
    hadoop文件写入
    elastic(10) 基本查询
    hadoop 小知识点
    "hadoop namenode -format"命令的作用和影响的文件
    elastic(9)映射
    Linux 学习笔记之 --- epoll 事件模型详解
    Linux 学习笔记之 --- select 与 poll 事件模型详解
    Tornado 高并发源码分析之二---Tornado启动和请求处理流程
    Tornado 高并发源码分析之五--- IOLoop 对象
    Tornado 高并发源码分析之四--- HTTPServer 与 TCPServer 对象
  • 原文地址:https://www.cnblogs.com/cstdio1/p/10902937.html
Copyright © 2011-2022 走看看