博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
CCF系列之Z字形扫描(201412-2)
阅读量:6800 次
发布时间:2019-06-26

本文共 4312 字,大约阅读时间需要 14 分钟。

试题编号:201412-2
试题名称:Z字形扫描
时间限制: 2.0s
内存限制: 256.0MB
问题描述
  在图像编码的算法中,需要将一个给定的方形矩阵进行Z字形扫描(Zigzag Scan)。给定一个n×n的矩阵,Z字形扫描的过程如下图所示:
  
  对于下面的4×4的矩阵,
  1 5 3 9
  3 7 5 6
  9 4 6 4
  7 3 1 3
  对其进行Z字形扫描后得到长度为16的序列:
  1 5 3 9 7 3 9 5 4 7 3 6 6 4 1 3
  请实现一个Z字形扫描的程序,给定一个n×n的矩阵,输出对这个矩阵进行Z字形扫描的结果。
输入格式
  输入的第一行包含一个整数n,表示矩阵的大小。
  输入的第二行到第n+1行每行包含n个正整数,由空格分隔,表示给定的矩阵。
输出格式
  输出一行,包含n×n个整数,由空格分隔,表示输入的矩阵经过Z字形扫描后的结果。
样例输入
4
1 5 3 9
3 7 5 6
9 4 6 4
7 3 1 3
样例输出
1 5 3 9 7 3 9 5 4 7 3 6 6 4 1 3
评测用例规模与约定
  1≤n≤500,矩阵元素为不超过1000的正整数。
 
解题思路:
 
 
 
 
 
 
 
实现代码自己写的(java):
  
1 import java.util.Scanner; 2  3 public class Main { 4     public static void main(String[] args) { 5          6         Scanner sc=new Scanner(System.in); 7          8         int n=sc.nextInt(); 9         10         sc.nextLine();11         12         int num = n + 1;13         14         int[][] matrix=new int[num][num];15         16         for (int i = 1; i < num; i++) {17             18             for (int j = 1; j < num; j++) {19                 20                 matrix[i][j]=sc.nextInt();21             }22             sc.nextLine();23         }24         printIt(matrix);25     }26     27     public static void printIt(int[][]arr){28         29         int n = arr.length;30         31         n--;32         33         for(int i = 1; i<=n; i++){34             35             if(i%2 == 1){36                 37                 int k = 1;38                 39                 for(int j = i; j>0;j--){40                     41                     System.out.print(arr[j][k++]+" ");42                 }43                 44             }else{45                 46                 int k = i;47                 48                 for(int j = 1; j<=i;j++){49                     50                     System.out.print(arr[j][k--]+" ");51                 }52             }53         }54         55         for(int i = n-1; i>0; i--){56             57             if(i%2 == 0){58                 59                 int k = n;60                 61                 for(int j = n-i+1; j<=n;j++){62                     63                     System.out.print(arr[j][k--]+" ");64                 }65                 66             }else{67                 68                 int k = n-i+1;69                 70                 for(int j = n; j>=n-i+1;j--){71                     72                     System.out.print(arr[j][k++]+" ");73                 }74             }75         }76     }77       78 }
View Code

运行结果:

  

 

实现代码2 别人写的(java):

  

1 import java.util.Scanner; 2  3 public class Main { 4     public static void main(String[] args) { 5         Scanner sc=new Scanner(System.in); 6         int n; 7         n=sc.nextInt(); 8         int[][] matrix=new int[n][n]; 9         for (int i = 0; i < n; i++) {10             for (int j = 0; j < n; j++) {11                 matrix[i][j]=sc.nextInt();12             }13         }14         15         for (int i = 0; i < n; i++) {16             int row=0;17             int column=0;18             if (i%2==0) {19                 row=i;20                 column=0;21                 System.out.print(matrix[row][column]+" ");22                 while (row-1>=0&&column+1
=0) { 32 row++;33 column--;34 System.out.print(matrix[row][column]+" "); 35 }36 }37 }38 for (int i = 1; i
=0&&column+1
=0) {56 row++;57 column--;58 System.out.print(matrix[row][column]+" ");59 }60 }61 } else {62 if (i%2==0) {63 row=i;64 column=n-1;65 System.out.print(matrix[row][column]+" ");66 while (row+1
=0) {67 row++;68 column--;69 System.out.print(matrix[row][column]+" ");70 }71 72 } else {73 row=n-1;74 column=i;75 System.out.print(matrix[row][column]+" ");76 while (row-1>=0&&column+1
View Code

 

运行结果:

  

转载地址:http://gzywl.baihongyu.com/

你可能感兴趣的文章
《Servlet和JSP学习指南》一1.4 ServletRequest
查看>>
你不得不知的推进DevOps实践的四大趋势
查看>>
华天动力OA客户管理系统如何将细节处理到完美?
查看>>
国美在线“8.3男人节”来了 3C家电百货五折扫货就在今天
查看>>
IBM推出开源软件开发工具Quarks,助力企业开发物联网应用
查看>>
《高阶Perl》——第1章 递归与回调 1.1 十进制到二进制的转换
查看>>
关于网联平台的出世,有必要解释清楚这几个问题
查看>>
国家工业信息安全产业发展联盟成立
查看>>
雅虎修改公司章程 防止激进投资者进驻董事会
查看>>
卫翰思治下的爱立信:被华为全面超越 近一年股价跌40%
查看>>
超融合设备如何影响私有云部署
查看>>
鳄鱼还是木头?亚信安全提醒:APT攻击防范要当心“水坑”
查看>>
互联健康 共融共生
查看>>
传郭台铭已与夏普高层会晤 商讨收购事宜
查看>>
政府单位专享 国内“特供版”Windows 10真的来了
查看>>
中国百毫秒量子存储器 《自然》:非凡绝技
查看>>
小鱼易连打造基于互联网环境下的高清视频会议终端
查看>>
微型传感器探测屁的来源:可为医疗提供依据
查看>>
历史性时刻!亚马逊股价突破1000美元
查看>>
互联网如何打造智慧医疗:边界确定价值
查看>>