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;
        }
    }
  • 相关阅读:
    ZOJ2913Bus Pass(BFS+set)
    HDU1242 Rescue(BFS+优先队列)
    转(havel 算法)
    ZOJ3761(并查集+树的遍历)
    ZOJ3578(Matrix)
    HDU1505
    ZOJ3574(归并排序求逆数对)
    VUE-脚手架搭建
    VUE脚手架搭建
    VUE-node.js
  • 原文地址:https://www.cnblogs.com/Dzhouqi/p/3628129.html
Copyright © 2011-2022 走看看