Acwing-3208. Z字形扫描

2024-03-30 15:52
文章标签 扫描 acwing 字形 3208

本文主要是介绍Acwing-3208. Z字形扫描,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

 

 

输入样例:
4
1 5 3 9
3 7 5 6
9 4 6 4
7 3 1 3

 代码:

#include <iostream>
#include <vector>
using namespace std;
int dxy[][2] = { {0,1},{1,-1},{1,0},{ -1,1 } };	//偏移量数组
int main()
{int n;cin >> n;vector<vector<int>>map(n + 1, vector<int>(n + 1));for (int i = 1; i <= n; i++)for (int j = 1; j <= n; j++)cin >> map[i][j];int count = 0;		//记数int t = 0;		//用于偏移量数组int x = 1, y = 1;cout << map[x][y] << " "; //先将第一个位置的数字输出count++;		//计数+1while (count < n * n)	//当 计数等于n*n时结束循环{int xx = x + dxy[t][0];		//把坐标更新int yy = y + dxy[t][1];	if (xx >= 1 && xx <= n && yy >= 1 && yy <= n&&map[xx][yy])	//先判断坐标合不合法,再判断该位置有没有走过{x = xx; y = yy;			//将更新后的坐标赋值给x,方便在x基础上更新坐标cout << map[x][y] << " ";		//输出该坐标的数map[x][y] = 0;		//将该坐标标记为0,意味着走过count++;if (t == 0 || t == 2)	//当前向右(t=0)以及向下(t=2)时意味着接下来该左下或右上t++;}else {		//当越界或该位置已经走过时,改变朝向t = (t + 1) % 4;	}}return 0;
}

这里为什么一定要将走过的标记为0以及判断有没有走过?

3坐标是7,如果你不加判断有没有走过,则会从7往右上走,也就是从7->4,而不是从7->3了。你本就是从4->7,紧接着应该从7->3,如果不加判断,则变成4->7,7->4了,也就是又回去走重复了。

这篇关于Acwing-3208. Z字形扫描的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/861917

相关文章

SQL注入漏洞扫描之sqlmap详解

《SQL注入漏洞扫描之sqlmap详解》SQLMap是一款自动执行SQL注入的审计工具,支持多种SQL注入技术,包括布尔型盲注、时间型盲注、报错型注入、联合查询注入和堆叠查询注入... 目录what支持类型how---less-1为例1.检测网站是否存在sql注入漏洞的注入点2.列举可用数据库3.列举数据库

IDEA常用插件之代码扫描SonarLint详解

《IDEA常用插件之代码扫描SonarLint详解》SonarLint是一款用于代码扫描的插件,可以帮助查找隐藏的bug,下载并安装插件后,右键点击项目并选择“Analyze”、“Analyzewit... 目录SonajavascriptrLint 查找隐藏的bug下载安装插件扫描代码查看结果总结Sona

python-nmap实现python利用nmap进行扫描分析

《python-nmap实现python利用nmap进行扫描分析》Nmap是一个非常用的网络/端口扫描工具,如果想将nmap集成进你的工具里,可以使用python-nmap这个python库,它提供了... 目录前言python-nmap的基本使用PortScanner扫描PortScannerAsync异

【AcWing】851. 求最短路

spfa算法其实是对贝尔曼福特算法做一个优化。 贝尔曼福特算法会遍历所有边来更新,但是每一次迭代的话我不一定每条边都会更新,SPFA是对这个做优化。 如果说dist[b]在当前这次迭代想变小的话,那么一定是dist[a]变小了,只有a变小了,a的后继(b)才会变小。 用宽搜来做优化,用一个队列,队列里边存的就是所有变小了的结点(队列里存的是待更新的点)。 基本思路就是我更新过谁,我再拿

独立按键单击检测(延时消抖+定时器扫描)

目录 独立按键简介 按键抖动 模块接线 延时消抖 Key.h Key.c 定时器扫描按键代码 Key.h Key.c main.c 思考  MultiButton按键驱动 独立按键简介 ​ 轻触按键相当于一种电子开关,按下时开关接通,松开时开关断开,实现原理是通过轻触按键内部的金属弹片受力弹动来实现接通与断开。  ​ 按键抖动 由于按键内部使用的是机

三维激光扫描点云配准外业棋盘的布设与棋盘坐标测量

文章目录 一、棋盘标定板准备二、棋盘标定板布设三、棋盘标定板坐标测量 一、棋盘标定板准备 三维激光扫描棋盘是用来校准和校正激光扫描仪的重要工具,主要用于提高扫描精度。棋盘标定板通常具有以下特点: 高对比度图案:通常是黑白相间的棋盘格,便于识别。已知尺寸:每个格子的尺寸是已知的,可以用于计算比例和调整。平面标定:帮助校准相机和激光扫描仪之间的位置关系。 使用方法 扫描棋盘:

【AcWing】852. spfa判断负环

#include<iostream>#include<algorithm>#include<cstring>#include<queue>using namespace std;const int N= 1e5+10;int n,m;int h[N],w[N],e[N],ne[N],idx;int dist[N],cnt[N];//cnt存最短路径的边数bool st[N];v

Android扫描名片的动画以及剪裁扫描框的图片

参考代码:https://github.com/smartown/CertificateCamera 本文章在上述参考代码的基础上进行修改,用到的SurfaceView是链接代码里的CameraPreview,不过本人比较懒,直接加入相机连续对焦模式代替点击屏幕对焦   ,在CameraPreview中添加 parameters.setFocusMode(Camera.Parameters.F

11GR2下基于CBO全表扫描cost计算

########################################################## ##11gr2下基于cbo优化器,在不做系统统计信息收集下全表扫描的成本计算#### ########################################################## CBO的成本计算设计到非工作负载下的系统统计信息 CPUSPEEDNW=>系统

算法:图片压缩算法【Z字行扫描】(Java实现)

要在Java中实现Z字形扫描,我们需要遍历一个给定的n×n矩阵,并按照Z字形的顺序输出其元素。Z字形扫描的路径通常是从矩阵的左上角开始,沿着对角线方向交替向下和向上移动,直到遍历完整个矩阵。 下面是一个简单的Java实现示例: import java.util.Scanner;public class ZigzagScan {public static void main(String