CCF Z字形扫描
来源:互联网 发布:virtuixomni淘宝 编辑:程序博客网 时间:2024/05/17 06:23
问题描述
在图像编码的算法中,需要将一个给定的方形矩阵进行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字形扫描的结果。
对于下面的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+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
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的正整数。
解题思路: 共有四种方向,→,↙,↗,↓, 在扫描过程中只要控制方向 就可以了。
import java.util.Scanner;public class Main{ public static final int right=1; public static final int down=2; public static final int leftdown=3; public static final int rightup=4;public static void main(String[] args) { Scanner in=new Scanner(System.in); int length=in.nextInt(); int [][]A=new int[length][length]; for(int i=0;i<length;i++) for(int j=0;j<length;j++) A[i][j]=in.nextInt(); int direction=0;//指定方向 int x=0,y=0,n=A.length; StringBuilder result = new StringBuilder(); result.append(A[x][y]); while( !(x==n-1 && y==n-1)){ if(direction==0){ direction=right; } else if(direction==right){ if(x+1<=n-1 &&y-1>=0){ direction=leftdown; } else{ direction=rightup; } }else if(direction==down){ if(x-1>=0&& y+1<n-1){ direction=rightup; }else{ direction=leftdown; } }else if(direction==leftdown){ if(x+1<=n-1 && y-1>=0){ direction=leftdown; }else if(x+1<=n-1){ direction=down; } else{ direction=right; } }else if(direction==rightup){ if(x-1>=0 && y+1<=n-1){ direction=rightup; } else if(y+1<=n-1){ direction=right; }else{ direction=down; } } switch(direction){ case right : y=y+1;break; case leftdown : x=x+1;y=y-1;break; case rightup : x=x-1;y=y+1;break; case down : x=x+1;break; } result.append(" "); result.append(A[x][y]); } System.out.println(result); }}
0 0
- 【CCF】Z字形扫描
- ccf Z字形扫描
- CCF Z字形扫描
- CCF Z字形扫描
- ccf Z字形扫描
- ccf-Z字形扫描
- 【CCF】Z字形扫描
- CCF Z字形扫描
- CCF题目:Z字形扫描
- CCF之Z字形扫描
- Z字形扫描-CCF测试往届题
- ccf认证试题 Z字形扫描
- CCF 201412-2Z字形扫描 题解
- ccf-201412-2 Z字形扫描
- ccf Z字形扫描 30行版
- CCF-201412-2 Z字形扫描
- CCF 201412-2 Z字形扫描
- CCF-201412-2-Z字形扫描
- Java入门笔记二——类和对象
- JavaScript中label语句的使用
- learning of zabbix 3.2.3 之nginx
- 我的程序员之路(英语的学习)
- mysql读取一张表中的字段循环插入另一张表
- CCF Z字形扫描
- EasyUI tab加载iframe高度不适应
- Summernote – 基于 Bootstrap 的文本编辑器
- 紫书动规 例题9-7 UVA
- iOS最笨的办法实现无限轮播图(网络加载)
- C#多态与虚方法
- LeetCode : Path Sum III
- EF 与 sql server 转到mysql
- Node.js的安装和配置