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。代码中包含详细的注释,方便理解算法逻辑。

C++ 和 Rust 语言实现的坐标判断算法:寻找指定区域的索引

原文地址: https://www.cveoy.top/t/topic/puVW 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录