zoukankan      html  css  js  c++  java
  • CCF真题之Z字形扫描

    201412-2

    问题描述
      在图像编码的算法中,需要将一个给定的方形矩阵进行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的正整数。
     
    源代码如下:

    #include <iostream>

    using namespace std;

    int main() {  

    int n,i,j,k,a[501][501];  

    cin>>n;  

    for(i=0;i<n;i++)  

      for(j=0;j<n;j++)   

      cin>>a[i][j];  

    for(k=0;k<n;k++)  {    

       if(k%2==0)   {    

       j=0;    

       i=k;    

     while(i>=0)    {     

       if(k==0)       

       cout<<a[i][j];     

       else      

       cout<<" "<<a[i][j];       

       i--;       

       j++;         

                       }   

                       }  

     else   {        

    j=k;    

    i=0;    

    while(j>=0)    {     

    cout<<" "<<a[i][j];    

     i++;    

     j--;    

    }   

    }    

    }  

    for(k=n;k<2*n-1;k++)  {   

    if(k%2==0)   {       

     i=n-1;    

    j=k-i;     

    while(j<=n-1)   {    

    cout<<" "<<a[i][j];    

    i--;    

    j++;   

    }     

    }   

    else   {    

    j=n-1;    

    i=k-j;    

    while(i<=n-1)    {     

    cout<<" "<<a[i][j];     

    i++;     

    j--;    

    }   

    }    

     }

     return 0; }

    具体分析请查询:相册中 Z字形扫描图片分析。

  • 相关阅读:
    java纯数字加密解密实例
    C++手稿:std::string
    java裁剪图片
    java打开windows系统的浏览器
    Android手机无线adb
    office-word
    设计模式-享元模式(13)
    设计模式-外观模式(12)
    charles工具过滤腾讯视频播放器广告
    js将json格式的list转换为按某个字段分组的map数组
  • 原文地址:https://www.cnblogs.com/lchzls/p/5037091.html
Copyright © 2011-2022 走看看