当前位置: 首页 > news >正文

逆向输出回环数组

题目来源:http://noi.openjudge.cn/ch0108/23/

给定一个row行col列的整数数组array,要求从array[0][0]元素开始,按回形从外向内逆时针顺序遍历整个数组。如图所示:
663847-20170719222740474-1922219648.png

输出
按遍历顺序输出每个整数。每个整数占一行。

样例输入

1   2   3   4
5   6   7   8
9   10  11  12

样例输出

1
5
9
10
11
12
8
4
3
2
6
7

PHP实现

$a = [
    [1,2,3,4],
    [5,6,7,8],
    [9,10,11,12]
];

$row = count($a);
$col = count($a[0]);

$i=0;$j=0;
$count = $row * $col;
while ($count > 0){

    //打印最左边一列
    for($k=1;$k<$row; $k++){
        $count--;echo $a[$i][$j] .PHP_EOL;$i++;
    }

    //打印最下边一行
    for($k=1;$k<$col; $k++){
        $count--;echo $a[$i][$j].PHP_EOL;$j++;
    }

    //打印最右边一列
    for($k=1;$k<$row; $k++){
        $count--;echo $a[$i][$j].PHP_EOL;$i--;
    }

    //打印最上边一行
    for($k=1;$k<$col; $k++){
        $count--;echo $a[$i][$j].PHP_EOL;$j--;
    }

    $row-=2;//走完一圈,行数减2
    $col-=2;//走完一圈,列数减2
    $i++;//最外一圈不用再次输出
    $j++;//最外一圈不用再次输出

    if($row == 1){
        for($k=0;$k<$col; $k++){
            $count--;echo $a[$i][$j].PHP_EOL;$j++;
        }
    }elseif($col == 1){
        for($k=0;$k<$row; $k++){
            $count--;echo $a[$i][$j].PHP_EOL;$i++;
        }
    }
}

可以调整代码实现原题目里的示例顺序输出。

C语言实现


#include <stdio.h>
#define maxN 101
int main(int argc, char *argv[])
{
    int row,col,i,j,k;
    int a[maxN][maxN];
    int count;
    
    printf("请输入行数 列数:\n"); 
    scanf("%d%d",&row,&col);
    printf("请输入%d*%d矩阵:\n", row, col);
     
    for(i=0;i<row;i++)
    {
        for(j=0;j<col;j++)
        {
            scanf("%d",&a[i][j]);
        }
    }
    
    if(row==1)//只有一行
    {
        i=0;j=0; 
        for(k=1;k<=col;k++)
        { printf("%d\n",a[i][j]);j++;}
    }
    else if(col==1)//只有一列
    {
        i=0;j=0;
        for(k=1;k<=row;k++)
        { printf("%d\n",a[i][j]);i++;}
    }
    else
    {
        i=0;j=0;
        count=row*col;
        while(count>0)
        {   
            for(k=1;k<row;k++)
            { count--; printf("%d\n",a[i][j]);i++;}  //输出一个环的左侧那一条边
            
            for(k=1;k<col;k++)
            { count--; printf("%d\n",a[i][j]);j++;}  //输出一个环的下面那一条边
            
            for(k=1;k<row;k++)
            { count--; printf("%d\n",a[i][j]);i--;}  //输出一个环的右侧那一条边
            
            for(k=1;k<col;k++)
            { count--; printf("%d\n",a[i][j]);j--;}  //输出一个环的上面那一条边 
            
            i++;
            j++;
            row-=2;
            col-=2;
            if(row==1)//只剩下一行
            {
                for(k=1;k<=col;k++)
                { count--; printf("%d\n",a[i][j]);j++;}
            }
            else if(col==1)//只剩下一列
            {
                for(k=1;k<=row;k++)
                { count--; printf("%d\n",a[i][j]);i++;}
            }
        }
    }
    return 0;
}

663847-20170719223915083-150756005.png

参考:
http://www.cnblogs.com/huashanqingzhu/p/5666473.html

相关文章:

  • 最近忙死了。。。
  • Caffe+Windows 环境搭建收集
  • 设计模式学习笔记--Façade外观模式
  • 自己动手,实现“你的名字”滤镜
  • 再谈ASP.NET第一 - ASP.NET2.0的回调机制
  • Yue Fei's Battle(组合计数递推)
  • apache地址限制和用户访问
  • Zigbee
  • 我谈通“下水道”(系列连载6)--新的征程
  • SpringBoot入门——应用devtools进行热部署
  • 对Action方法的参数进行双向转化
  • MATLAB中帮助的几种使用方法
  • 伪静态技术说明
  • Java中Model1和Model2
  • config jre for openoffice3.0
  • ----------
  • 《Javascript高级程序设计 (第三版)》第五章 引用类型
  • axios 和 cookie 的那些事
  • Java方法详解
  • JWT究竟是什么呢?
  • MQ框架的比较
  • oschina
  • STAR法则
  • 不发不行!Netty集成文字图片聊天室外加TCP/IP软硬件通信
  • 那些被忽略的 JavaScript 数组方法细节
  • 你不可错过的前端面试题(一)
  • 浅析微信支付:申请退款、退款回调接口、查询退款
  • 正则学习笔记
  • 1.Ext JS 建立web开发工程
  • ​直流电和交流电有什么区别为什么这个时候又要变成直流电呢?交流转换到直流(整流器)直流变交流(逆变器)​
  • # centos7下FFmpeg环境部署记录
  • # 深度解析 Socket 与 WebSocket:原理、区别与应用
  • ### Error querying database. Cause: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException
  • #基础#使用Jupyter进行Notebook的转换 .ipynb文件导出为.md文件
  • #中国IT界的第一本漂流日记 传递IT正能量# 【分享得“IT漂友”勋章】
  • $L^p$ 调和函数恒为零
  • (14)目标检测_SSD训练代码基于pytorch搭建代码
  • (办公)springboot配置aop处理请求.
  • (数位dp) 算法竞赛入门到进阶 书本题集
  • (译) 理解 Elixir 中的宏 Macro, 第四部分:深入化
  • (转)C#调用WebService 基础
  • .equals()到底是什么意思?
  • .MyFile@waifu.club.wis.mkp勒索病毒数据怎么处理|数据解密恢复
  • .net oracle 连接超时_Mysql连接数据库异常汇总【必收藏】
  • .net 简单实现MD5
  • .NET上SQLite的连接
  • .net实现客户区延伸至至非客户区
  • .net用HTML开发怎么调试,如何使用ASP.NET MVC在调试中查看控制器生成的html?
  • .sh 的运行
  • /etc/skel 目录作用
  • @angular/cli项目构建--Dynamic.Form
  • @ModelAttribute注解使用
  • @软考考生,这份软考高分攻略你须知道
  • [20161101]rman备份与数据文件变化7.txt
  • [C/C++] -- 二叉树