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

    螺旋数组

        最近看的一本数据结构书里,在数组与广义表部分中间展示了一道螺旋数组题。初见这道题时是在我刚学完C语言第一次在隔壁发博客的时候,当时思路就是循环嵌套,但各种flag变量设置的自己头晕眼花。印象深刻,再见就觉得很有趣,纪念一下!

    题目

    #include<iostream>
    #include<algorithm>
    using namespace std;
    typedef
    struct { int x; int y; }pt; //位置

    int m[30][30]; pt here,next,dt[4]={0,1,1,0,0,-1,-1,0};//当前位置、下个位置。右下左上方向数组 void Init(int n) { for(int i=1;i<=n;i++) { for(int j=1;j<=n;j++) m[i][j]=0; } for(int i=0;i<=n+1;i++) { m[i][0]=-1; m[0][i]=-1; m[n+1][i]=-1; m[i][n+1]=-1; } } void print(int n) { cout<<endl; for(int i=1;i<=n;i++) { for(int j=1;j<=n;j++) cout<<m[i][j]<<" "; cout<<endl<<endl; } } void solve(int n) { int ant=1,f=0; here.x=1; here.y=1; m[1][1]=1; while(ant<n*n) { next.x=here.x+dt[f].x; next.y=here.y+dt[f].y; if(m[next.x][next.y]==0) { m[next.x][next.y]=++ant; here=next; } else { f=(f+1)%4; } } } int main() { int n; cin>>n; Init(n); //print(n); solve(n); print(n); return 0; }
  • 相关阅读:
    iOS内存管理机制
    iOS开发之XML和JSON数据解析
    Ubuntu小点汇总,更新中...
    Android与服务器的简单通讯
    Gedit乱码问题
    Eclipse软件问题-方案积累
    开放接口使用积累
    定制知识积累
    Android小代码-技巧积累
    Android初学点滴积累(操作篇)
  • 原文地址:https://www.cnblogs.com/thx2199/p/13822367.html
Copyright © 2011-2022 走看看