zoukankan      html  css  js  c++  java
  • 【算法】 输入n 输出一个n*n的zigzag矩阵 利用c++实现

    int main()
    {
        int N;
        cin>>N;
    
        int **a = new int *[N];
        
        if(a==0)
            return 0;//如果没有申请到空间
    
        for(int i=0;i<N;i++) 
        {
            a[i]= new int [N];
            if(a[i] == 0)
                return 0;
        }
    
        a[0][0]=0;
        for(int i=1;i<N;i++)//初始化第一行
        {
            if(i%2==1)//根据第一行的变化规律
            {
            a[0][i]=a[0][i-1]+1;
            }
            else
            {
                a[0][i]=a[0][i-1]+i+i;
            }
        }
    
        for(int i=1;i<N;i++)//初始化最后一列
        {
            if(i%2==1)//根据最后一列的变换规律
            {
                a[i][N-1]=a[i-1][N-1]+(N-i)*2;
            }
            else
            {
                a[i][N-1]=a[i-1][N-1]+1;
            }
    
        }
    
        //中间的部分,利用左上方的递归。
        //可以分为两类,当i+j是奇数是,zigzag方向是从右往左,从上往下.反之亦然
        for(int i=1;i<N;i++)
            for(int j=0;j<N-1;j++)
            {
                if ((i+j)%2==0)  
                    a[i][j]=a[i-1][j+1]-1;
                else
                    a[i][j]=a[i-1][j+1]+1;
            }
        //print out the result
        for(int i=0;i<N;i++)
        {
            for(int j=0;j<N;j++)
            {
                cout<<a[i][j]<<"    ";
            }
            cout<<endl;
        }
    }
  • 相关阅读:
    4Sum
    3Sum Closest
    3Sum
    Longest Common Prefix
    Roman to Integer
    thinkphp3.2自定义配置文件
    centos7下git的使用和配置
    git 报错
    Git服务器安装详解及安装遇到问题解决方案
    centos GIT安装
  • 原文地址:https://www.cnblogs.com/Dzhouqi/p/3628129.html
Copyright © 2011-2022 走看看