C++ 和 Rust 语言实现的坐标判断算法:寻找指定区域的索引
C++ 和 Rust 语言实现的坐标判断算法
本算法用于在一个包含多个矩形区域的集合中,判断指定坐标是否位于其中一个区域内,并返回该区域的索引。本文将分别使用 C++ 和 Rust 语言实现该算法,并提供详细的代码注释。
C++ 实现
#include<bits/stdc++.h>
using namespace std;
int main(){
long long n,i,a[100010],b[100010],g[100010],k[100010];
cin>>n;
for(i=1;i<=n;i++)
{
cin>>a[i]>>b[i]>>g[i]>>k[i];
}
int x,y,sum=0;
cin>>x>>y;
for(i=1;i<=n;i++)
{
if(x<=a[i]+g[i]&&x>=a[i]&&y<=b[i]+k[i]&&y>=b[i])
{
sum=i;
}
}
if(!sum) cout<<"-1";
else cout<<sum;
return 0;
}
Rust 实现
use std::io::{self, Read};
fn main() {
let mut input = String::new();
io::stdin().read_to_string(&mut input).unwrap();
let mut lines = input.lines();
let n: usize = lines.next().unwrap().parse().unwrap();
let mut a = vec![0; n];
let mut b = vec![0; n];
let mut g = vec![0; n];
let mut k = vec![0; n];
for i in 0..n {
let line = lines.next().unwrap();
let mut nums = line.split_whitespace();
a[i] = nums.next().unwrap().parse().unwrap();
b[i] = nums.next().unwrap().parse().unwrap();
g[i] = nums.next().unwrap().parse().unwrap();
k[i] = nums.next().unwrap().parse().unwrap();
}
let line = lines.next().unwrap();
let mut nums = line.split_whitespace();
let x: i32 = nums.next().unwrap().parse().unwrap();
let y: i32 = nums.next().unwrap().parse().unwrap();
let mut sum = 0;
for i in 0..n {
if x <= a[i] + g[i] && x >= a[i] && y <= b[i] + k[i] && y >= b[i] {
sum = i + 1;
}
}
if sum == 0 {
println!("-1");
} else {
println!("{}", sum);
}
}
上述代码分别使用 C++ 和 Rust 语言实现了判断坐标是否位于矩形区域内的算法。代码中使用循环遍历所有矩形区域,判断指定坐标是否位于当前区域内。如果找到包含该坐标的区域,则返回其索引,否则返回 -1。代码中包含详细的注释,方便理解算法逻辑。
原文地址: https://www.cveoy.top/t/topic/puVW 著作权归作者所有。请勿转载和采集!