CCF认证真题-(201412-2)-Z字形扫描

 1 #include <iostream>
 2 using namespace std;
 3 int arr[505][505];
 4 bool flag;
 5 int n;
 6 void printComp(int x1, int y1, int x2, int y2)
 7 {
 8     int i = x1, j = y1;
 9     if (x1 == n && x2 == n) {
10         cout << arr[n][n] << endl;
11         return;
12     }
13     if (!flag) {
14         // 斜向上
15         while (i >= 1 && j <= y2) {
16             cout << arr[i][j] << ‘ ‘;
17             i--;
18             j++;
19         }
20     }
21     else {
22         // 斜向下
23         while (i <= x2 && j >= 1) {
24             cout << arr[i][j] << ‘ ‘;
25             i++;
26             j--;
27         }
28     }
29 }
30
31 int main()
32 {
33     ios::sync_with_stdio(false);
34     cin.tie(0);
35     cin >> n;
36     for (int i = 1; i <= n; i++)
37         for (int j = 1; j <= n; j++)
38             cin >> arr[i][j];
39     flag = false;
40     for (int i = 1; i <= n; i++) {
41         if (!flag)
42             printComp(i, 1, 1, i);
43         else
44             printComp(1, i, i, 1);
45         flag = !flag;
46     }
47
48     for (int i = 2; i <= n; i++) {
49         if (!flag)
50             printComp(n, i, i, n);
51         else
52             printComp(i, n, n, i);
53         flag = !flag;
54     }
55     return 0;
56 }

原文地址:https://www.cnblogs.com/AntonLiu/p/11164686.html

时间: 2024-08-28 07:47:58

CCF认证真题-(201412-2)-Z字形扫描的相关文章

14年12月CCF真题2-Z字形扫描

问题描述 在图像编码的算法中,需要将一个给定的方形矩阵进行Z字形扫描(Zigzag Scan).给定一个n×n的矩阵,Z字形扫描的过程如下图所示: 对于下面的4×4的矩阵, 1539 3756 9464 7313 对其进行Z字形扫描后得到长度为16的序列: 1539739547366413 请实现一个Z字形扫描的程序,给定一个n×n的矩阵,输出对这个矩阵进行 Z字形扫描的结果. 输入格式 输入的第一行包含一个整数n,表示矩阵的大小. 输入的第二行到第n+1行每行包含n个正整数,由空格分隔,表示给

CCF认证真题-(201312-1)-出现次数最多的数

1 #include <iostream> 2 using namespace std; 3 int arr[10005]; 4 int main() 5 { 6 ios::sync_with_stdio(false); 7 cin.tie(0); 8 int n; 9 cin >> n; 10 int x, maxn = 0; 11 for (int i = 0; i < n; i++) { 12 cin >> x; 13 maxn = x > maxn

CCF认证真题-(201312-2)-ISBN号码(模拟)

#include <iostream> #include <algorithm> using namespace std; int arr[10005]; int toNum(char ch) {return ch - '0';} int main() { ios::sync_with_stdio(false); cin.tie(0); string s; cin >> s; int num = toNum(s[0]) + toNum(s[2]) * 2 + toNum

CCF认证真题-(201409-2)-画图(暴力)

1 #include <iostream> 2 #include <algorithm> 3 #include <set> 4 using namespace std; 5 6 bool vis[105][105]{false}; 7 int main() 8 { 9 ios::sync_with_stdio(false); 10 cin.tie(0); 11 int n; 12 cin >> n; 13 int x1, y1, x2, y2, s = 0;

CCF认证真题-(201509-2)-日期计算

1 #include <iostream> 2 using namespace std; 3 int month[2][13] {{0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}, 4 {0, 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}}; 5 6 bool isLeap(int y) 7 { 8 return y % 400 == 0 || (y % 4 == 0 &&

CCF认证真题-(201509-1)-数列分段

1 #include <iostream> 2 using namespace std; 3 int main() 4 { 5 ios::sync_with_stdio(false); 6 cin.tie(0); 7 8 int n; 9 cin >> n; 10 int pre; 11 cin >> pre; 12 int ans = 1; 13 for (int i = 1; i < n; i++) { 14 int x; 15 cin >> x;

CCF 201412-2 Z字形扫描

题目来自2014年12月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字形扫描的结果. 输入格式 输

ccf历年真题(截至2015年9月)

问题描述 试题编号: 201509-1 试题名称: 数列分段 时间限制: 1.0s 内存限制: 256.0MB 问题描述: 问题描述 给定一个整数数列,数列中连续相同的最长整数序列算成一段,问数列中共有多少段? 输入格式 输入的第一行包含一个整数n,表示数列中整数的个数. 第二行包含n个整数a1, a2, …, an,表示给定的数列,相邻的整数之间用一个空格分隔. 输出格式 输出一个整数,表示给定的数列有多个段. 样例输入 8 8 8 8 0 12 12 8 0 样例输出 5 样例说明 8 8

CCF Z字形扫描

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字形扫描的结果. 输入