• CCF 201412-2 Z字形扫描


    问题描述
    试题编号: 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的正整数。
     1 //201412-2
     2 //Z字形扫描
     3 #include<cstdio>
     4 #include<cmath>
     5 #include<cstring>
     6 #include<algorithm>
     7 #include<iostream>
     8 #include<stack>
     9 using namespace std;
    10 #define size 500
    11 int map[size+5][size+5];
    12 int main(){
    13     //freopen("D:\INPUT.txt","r", stdin);
    14     int n;
    15     int i,j;
    16     cin>>n;
    17     for(i=1;i<=n;i++){
    18         for(j=1;j<=n;j++){
    19             cin>>map[i][j];
    20         }
    21     }
    22     //int sum=3;
    23     //f=1,e=2;
    24     int nn=2*n;
    25     //bool b=true;//e减  f增
    26     int a=1,b=2;
    27     cout<<map[1][1];
    28     if(n==1)
    29         return 0;
    30     while(a+b<=n){
    31         if(a==1){
    32             cout<<" "<<map[a][b];
    33             while(b>1){
    34                 cout<<" "<<map[++a][--b];
    35             }
    36             a++;//cout<<" "<<map[][b];
    37         }
    38         else{
    39             if(b==1){
    40             cout<<" "<<map[a][b];
    41             while(a>1){
    42                 cout<<" "<<map[--a][++b];
    43             }
    44             b++;//cout<<" "<<map[a][];
    45             }
    46         }
    47     }
    48     if(a==n){
    49         cout<<" "<<map[a][b];
    50         while(b<n){
    51             cout<<" "<<map[--a][++b];
    52         }
    53         a++;//cout<<" "<<map[][b];
    54     }
    55     else{
    56         cout<<" "<<map[a][b];
    57         while(a<n){
    58             cout<<" "<<map[++a][--b];
    59         }
    60         b++;//cout<<" "<<map[a][b++];
    61     }
    62     while(a+b<=nn){
    63         if(a==n){
    64             cout<<" "<<map[a][b];
    65             while(b<n){
    66                 cout<<" "<<map[--a][++b];
    67             }
    68             a++;//cout<<" "<<map[][b];
    69         }
    70         else{
    71             if(b==n){
    72             cout<<" "<<map[a][b];
    73             while(a<n){
    74                 cout<<" "<<map[++a][--b];
    75             }
    76             b++;//cout<<" "<<map[a][b++];
    77             }
    78         }
    79     }
    80     cout<<endl;
    81     return 0;
    82 }
  • 相关阅读:
    SAP 标准成本滚算小记
    记一次SAP新业务开发项目
    让人头疼的关键用户
    SAP GUI个性化设置
    惊心动魄的SAP S4客户额度调整运动
    最新.net和Java调用SAP RFC中间件下载
    那些年我遇到的ERP顾问
    【SAP业务模式】之STO(二):系统配置
    SAP S4系统创建Customer和Vendor的BAPI
    【SAP S/4 1511之变】:主数据之变
  • 原文地址:https://www.cnblogs.com/Deribs4/p/4368381.html
Copyright © 2020-2023  润新知