当前位置: 首页 > news >正文

正方形(Squares, ACM/ICPC World Finals 1990, UVa201)rust解法

有n行n列(2≤n≤9)的小黑点,还有m条线段连接其中的一些黑点。统计这些线段连成了多少个正方形(每种边长分别统计)。
行从上到下编号为1~n,列从左到右编号为1~n。边用H i j和V i j表示,分别代表边
(i,j)-(i,j+1)和(i,j)-(i+1,j)。如图4-5所示最左边的线段用V 1 1表示。图中包含两个边长为1的正方形和一个边长为2的正方形。
在这里插入图片描述

样例

4 
16
H 1 1
H 1 3
H 2 1
H 2 2
H 2 3
H 3 2
H 4 2
H 4 3
V 1 1
V 1 2
V 1 4
V 2 2
V 2 3
V 2 4
V 3 2
V 3 4
2 squre of len 1
1 squre of len 2

分析:
把所有边存到集合里。
对每一种正方形长度,遍历所有点,看集合里是否包含构成正方形的所有边。

解法:

use std::{io, collections::HashSet};fn main() {let mut buf = String::new();io::stdin().read_line(&mut buf).unwrap();let n: u32 = buf.trim().parse().unwrap();let mut buf = String::new();io::stdin().read_line(&mut buf).unwrap();let m: u32 = buf.trim().parse().unwrap();let mut bian= HashSet::new();for _i in 0..m {let mut buf = String::new();io::stdin().read_line(&mut buf).unwrap();let mut it = buf.split_whitespace();let t = it.next().unwrap().chars().nth(0).unwrap();let x: u32 = it.next().unwrap().parse().unwrap();let y: u32 = it.next().unwrap().parse().unwrap();bian.insert((t, x, y));}//println!("{:?}", bian);for len in 1..n {let mut cnt = 0;for i in 1..=n-len{'foo: for j in 1..=n-len{//println!("len: {}, i,j: {},{}", len, i, j);for step in 0..len {let one = ('H', i, j + step);if !bian.contains(&one) {//println!("{:?}", one);continue 'foo;}let one = ('H', i + len, j + step);if !bian.contains(&one) {//println!("{:?}", one);continue 'foo;}let one = ('V', i + step, j);if !bian.contains(&one) {//println!("{:?}", one);continue 'foo;}let one = ('V', i + step, j + len);if !bian.contains(&one) {//println!("{:?}", one);continue 'foo;}}cnt += 1;}}if cnt > 0 {println!("{} squre of len {}", cnt, len);}}
}
http://www.lryc.cn/news/197495.html

相关文章:

  • 【算法设计与分析qwl】伪码——顺序检索,插入排序
  • Uniapp路由拦截-自定义路由白名单
  • 在中国可以使用 HubSpot 吗?
  • Java的基础应用
  • 【excel】列转行
  • 用Bing绘制「V我50」漫画;GPT-5业内交流笔记;LLM大佬的跳槽建议;Stable Diffusion生态全盘点第一课 | ShowMeAI日报
  • Java身份证实名认证-阿里云API 【姓名、身份证号】
  • ND协议——无状态地址自动配置 (SLAAC)
  • iOS开发UITableView的使用,区别Plain模式和Grouped模式
  • css美化滚动条
  • 【CANoe】XML Test Module使用实例
  • oracle的update语句where条件后的索引字段为空时不执行
  • RabbitMQ的特点
  • JS单选框默认选中样式修改,为白色背景中心有黑色小圆点的样式
  • 2023年下半年NPDP考试今天开始报名!
  • nfs+rpcbind实现服务器之间的文件共享
  • 10-k8s-身份认证与鉴权
  • 如何分析K8S中的OOMKilled问题(Exit Code 137)
  • 【0day】泛微e-office OA未授权访问漏洞学习
  • CSS盒子模型的详细解析
  • 【mfc/VS2022】计图实验:绘图工具设计知识笔记2
  • Redis数据结构之quicklist
  • MMKV(1)
  • centos 7.9 源码安装htop
  • Element UI之Button 按钮
  • dig 简明教程
  • 深度分析AMQP以及在rabbitMQ中的应用
  • GB/T 28627-2023 抹灰石膏检测
  • JDK版本和Gradle版本配套关系
  • 在Linux中,怎么查看自己电脑的系统架构是什么?