查詢物件所需掃描次數的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