zoukankan      html  css  js  c++  java
  • 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的正整数。

    关键词:while(true),/xk

     1 #include<iostream>
     2 #include<vector>
     3 using namespace std;
     4 int main(){
     5     //freopen("in2.txt","r",stdin);
     6     int n;
     7     cin >> n;
     8     vector<vector<int> > v;
     9     vector<int> vr;
    10     for(int i = 0;i<n;i++){
    11         vr.clear();
    12         for(int j = 0;j<n;j++){
    13             int buf;
    14             cin >> buf;
    15             vr.push_back(buf);
    16         }
    17         v.push_back(vr);
    18     }
    19     int x = 0;
    20     int y = 0;
    21     int dir = 2;
    22     while(true){
    23         cout << v[y][x] << ' ';
    24         if(x == n-1 && y == n-1){
    25             break;
    26         }
    27         if(dir == 2){
    28             x = x+1;
    29         }
    30         else if(dir == 3){
    31             y = y+1;
    32         }
    33         else if(dir == 4){
    34             x = x-1;
    35             y = y+1;
    36         }
    37         else if(dir == 6){
    38             x = x+1;
    39             y = y-1;
    40         }
    41 
    42         if(dir == 2){
    43             if(y == 0){
    44                 dir = 4;
    45             }
    46             else{
    47                 dir = 6;
    48             }
    49         }
    50         else if(dir == 3){
    51             if(x == 0){
    52                 dir = 6;
    53             }
    54             else{
    55                 dir = 4;
    56             }
    57         }
    58         else if(dir == 4){
    59             if(y == n-1){
    60                 dir = 2;
    61             }
    62             else if(x == 0){
    63                 dir = 3;
    64             }
    65         }
    66         else if(dir == 6){
    67             if(x == n-1){
    68                 dir = 3;
    69             }
    70             else if(y == 0){
    71                 dir = 2;
    72             }
    73         }
    74     }
    75     return 0;
    76 }
  • 相关阅读:
    Oracle如何定义两个数组变量
    Oracle 数组定义
    Oracle的Number对应C#数据类型
    Oracle删除临时表
    我的第一个Flutter 项目(电商)
    Dart Mac 安装环境(无敌)
    React Native 问题(运行)
    TS的一些用法和普通的对比(Vue)
    vue2.0和vue3.0的响应式原理
    简易orm 主要是为了旧平台查询方便
  • 原文地址:https://www.cnblogs.com/ywsswy/p/7707590.html
Copyright © 2011-2022 走看看