查找对象所需扫描次数的C++代码
假设我们有一个m x n维的网格。一个物体放置在单元格(ix, iy),我们需要从起始位置(sx, sy)开始扫描查找该物体。扫描算法扫描网格的第i行和第j列,如果物体位于网格的单元格(i, j)。如果找到物体,则扫描停止;否则,扫描指针移动到位置(i + 1, j + 1)的单元格,然后以相同方式扫描。这将持续进行,直到找到物体。给定位置,我们需要找出算法必须执行多少次扫描才能找到物体。
因此,如果输入为n = 20,m = 20,sx = 3,sy = 2,ix = 12,iy = 4,则输出为2。
步骤
为了解决这个问题,我们将遵循以下步骤:
t1 := (if sx <= ix, then ix - sx, otherwise 2 * n - ix - sx) t2 := (if sy <= iy, then iy - sy, otherwise 2 * m - iy - sy) print(minimum of (t1, t2))
示例
让我们来看下面的实现来更好地理解:
#include <bits/stdc++.h>
using namespace std;
#define N 100
void solve(int n, int m, int sx, int sy, int ix, int iy) {
int t1 = (sx <= ix ? ix - sx : 2 * n - ix - sx);
int t2 = (sy <= iy ? iy - sy : 2 * m - iy - sy);
cout<< min(t1, t2);
}
int main() {
int n = 20, m = 20, sx = 3, sy = 2 , ix = 12, iy = 4;
solve(n, m, sx, sy, ix, iy);
return 0;
}输入
20, 20, 3, 2 , 12, 4
输出
2
广告
数据结构
网络
关系数据库管理系统 (RDBMS)
操作系统
Java
iOS
HTML
CSS
Android
Python
C语言编程
C++
C#
MongoDB
MySQL
Javascript
PHP