关于CCF中的Z字形扫描

来源:互联网 发布:粒子滤波算法流程图 编辑:程序博客网 时间:2024/04/30 03:10

之前学习了折叠方阵并试着做出了蛇形折叠,

最近在想螺旋折叠应怎么做。

今天看到了一个CCF 真题,感觉和之前类型差不多,就试着写一写。

题目如下:在图像编码的算法中,需要将一个给定的方形矩阵进行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字形扫描后的结果。

代码如下:

#include<iostream>using namespace std;int main(){int n,i,j,k=0;cin>>n;int a[n][n],b[n*n];for(i=0;i<n;i++){for(j=0;j<n;j++){cin>>a[i][j];}}for(i=1;i<n;i++)                //上半部三角形 {for(j=0;j<=i;j++){k++;if(i%2==1)              //分奇数偶数斜向进行讨论 {b[k]=a[j][i-j];}else{b[k]=a[i-j][j];}}}for(i=n;i<2*n-2;i++)                  //下半部三角形 {for(j=n-1;j>=1;j--){k++;    if(i%2==0)    {    b[k]=a[j][i-j];}else{b[k]=a[i-j][j];}}}b[0]=a[0][0];b[n*n-1]=a[n-1][n-1];for(i=0;i<n*n;i++){cout<<b[i]<<' ';}}


原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 用什么都过敏怎么办 脸上起过敏湿疹怎么办 脸上发湿疹过敏怎么办 感冒流鼻涕有痰怎么办 咳嗽流清水鼻涕怎么办 脸最近老是过敏怎么办 鼻炎脸特别疼怎么办 宝宝感冒一直流鼻涕怎么办 经常过敏的体质怎么办 一边鼻子堵了怎么办 鼻炎流清水鼻涕怎么办 鼻子总感觉堵塞怎么办 半边鼻子不通气怎么办 鼻炎感冒了鼻塞怎么办 左边鼻子不通气怎么办 婴儿鼻塞不通气怎么办 过敏性鼻炎一直打喷嚏怎么办 一只鼻子流鼻涕怎么办 一个鼻子不通气怎么办 夏天鼻子堵了怎么办 做完鼻子感冒了怎么办 鼻子不通流鼻涕打喷嚏怎么办 一岁半宝宝流鼻涕鼻塞怎么办 没有感昌流鼻涕怎么办 婴儿感冒咳嗽流鼻涕怎么办 小孩经常流鼻子怎么办 5岁宝宝流鼻涕怎么办 小孩鼻涕一直流怎么办 二岁宝宝流鼻涕怎么办 小婴儿有点鼻塞怎么办 宝宝流鼻涕总不好怎么办 孩子鼻炎睡不好怎么办 鼻炎清鼻涕不止怎么办 宝宝持续低烧流鼻涕怎么办 孩子鼻塞不通气怎么办 2月婴儿感冒怎么办 长期流黄鼻涕怎么办 孩子流清水鼻涕怎么办 小孩有点流鼻子怎么办 初生婴儿堵鼻子怎么办? 小孩反复发烧了怎么办