zoukankan      html  css  js  c++  java
  • zigzag数组,螺旋数组

    /*
    zigzag数组是一个“之”字形排列的数组,如8*8的zigzag数组: 
         1     5     6    14    15    27    28
         4     7    13    16    26    29    42
         8    12    17    25    30    41    43
        11    18    24    31    40    44    53
        19    23    32    39    45    52    54
        22    33    38    46    51    55    60
        34    37    47    50    56    59    61
        36    48    49    57    58    62    63
    */
    
    #include <iostream>
    #include <vector>
    #include <iomanip>
    
    using namespace std;
    
    int main()
    {
        int N;
        int s,i,j,dir;
        int squa;
        cout<<"将要实现N*N的zigzag矩阵,请输入N([1 100]):";
        cin>>N;
    
        vector<vector<int> > a(N,vector<int>(N));
        
        squa=N*N;
        i=0;     //
        j=0;     //
        s=0;     //计数 
        dir=0//四个行进方向0(right),1(left_down),2(down),3(right_up)
        while(s<squa)
        {
           //数组赋值
           a[i][j]=s;
           
           //设置下一点(位置和方向) 
           switch(dir)
           {
              case 0:
                    //位置 
                    j++;
                    //行进方向 
                    if(0==i)
                        dir=1;
                    if(N-1==i)
                        dir=3;
                    break;
              case 1:
                    i++;
                    j--;   
                    if(N-1==i)
                           dir=0;
                    else if(0==j)
                           dir=2;
                    break;
              case 2:
                    i++;
                    if(0==j)
                        dir=3;
                    if(N-1==j)
                        dir=1;
                    break;
              case 3:
                    i--;
                    j++;
                    if(N-1==j)
                           dir=2;
                    else if(0==i)
                           dir=0;
                    break;
              default:
                    break; 
           }
           s++;                        
        }
        
        cout<<"*************************************************************"<<endl;
        cout<<N<<"*"<<N<<"的zigzag矩阵:"<<endl;
        for(i=0;i<N;i++)
        {
             for(j=0;j<N;j++)
                    cout<<setw(6)<<a[i][j];
             cout<<endl;
        }
        
        cout<<"按任意键继续……";
        cin.clear();
        cin.sync();
        cin.get();
        return 0;
    }

     http://blog.163.com/xiaopengyan_109/blog/static/14983217320108471535829/

  • 相关阅读:
    sublime text 2安装Emment插件
    PHPExcel IE导出乱码问题
    还是PHPExcel问题
    一条SQL语句查询两表中两个字段
    PHPExcel导出插入图片和居中问题
    jqgrid demo
    openstack horizon 学习(1) 总览
    Python学习笔记
    微软2016校园招聘在线笔试 [Recruitment]
    动态树学习(留坑)
  • 原文地址:https://www.cnblogs.com/buptmemory/p/2913510.html
Copyright © 2011-2022 走看看