zoukankan      html  css  js  c++  java
  • 螺旋矩阵

    Description

    给定一个包含 m x n 个元素的矩阵(m 行, n 列),请按照顺时针螺旋顺序,输出矩阵中的所有元素。

    Input

    第一行两个整数m, n。 (1≤ m, n ≤100)

    第二行开始是一个m行n列的矩阵,每行的两个数之间由空格隔开。

    Output

    按照顺时针螺旋顺序,输出矩阵中的所有元素,两个数之间由空格隔开。

    Sample Input

    3 3
    1 2 3
    4 5 6
    7 8 9
    

    Sample Output

    1 2 3 6 9 8 7 4 5
    


     1 #include<iostream>
     2 //#include<fstream>
     3 using namespace std;
     4 int a[103][103];
     5 int book[200][230];
     6 int dir[5][2]={0,1,1,0,0,-1,-1,0};//用于转向的数组 
     7 int main(){
     8     int m,n;
     9 //    fstream file("haha.txt");
    10 //    file>>m>>n;
    11     cin>>m>>n;
    12     for(int i=1;i<=m;i++){
    13         for(int j=1;j<=n;j++){
    14         //    file>>a[i][j];
    15             cin>>a[i][j];
    16         }
    17     }
    18     int dx=1,dy=0,i=0;//dx,dy为初始的位置 
    19     int num=m*n,sum=0;//num是数组中所有元素的数量 
    20     while(1){
    21         dx+=dir[i%4][0];
    22         dy+=dir[i%4][1];//a[dx][dy]已经移动到了下个位置 
    23         if(dx>=1&&dx<=m&&dy>=1&&dy<=n&&!book[dx][dy]){//如果下个位置没有超过范围,并且没有到达过 
    24             cout<<a[dx][dy]<<" ";//就输出这个位置的元素 
    25             sum++;//输出元素加1,当输出元素的数量达到元素总数的时候,跳出循环 
    26             book[dx][dy]=1;//输出这个位置后,就标记这个位置 
    27         }
    28         else{//如果下个位置超过了范围或者下个位置是标记过的 
    29             dx-=dir[i%4][0];
    30             dy-=dir[i%4][1];//就先退回一步 
    31             i+=1;//i加1后,用与转换位置的数组dir就变了 
    32             dx+=dir[i%4][0]; 
    33             dy+=dir[i%4][1];//变换方向后的下一步 
    34             cout<<a[dx][dy]<<" ";//输出 
    35             book[dx][dy]=1;//标记 
    36             sum++;// 输出元素加1 
    37         }
    38         if(sum==num)
    39             break;//如果输出元素总数等于元素总数,跳出循环    
    40     }
    41     return 0;
    42 }




  • 相关阅读:
    RTP 控制协议
    非关系型数据库
    关系型数据库
    处理海量数据
    处理大并发
    C++ 模板偏特化-来自STL的思考
    C++详解new/delete
    二分算法来相会
    计算机网络知识点总结
    C++字符串类型转换
  • 原文地址:https://www.cnblogs.com/fate-/p/12239766.html
Copyright © 2011-2022 走看看