[USACO 2021.02 Feb]Problem 3. Clockwise Fence

简介: [USACO 2021.02 Feb]Problem 3. Clockwise Fence

围绕 Farmer John 最大的草地的栅栏已经损坏了,如今他终于决定要换一个新的栅栏。

不幸的是,当 Farmer John 在铺设新栅栏时,一只巨大的蜜蜂突然出现,在他的草地上追着他跑,导致最后栅栏被沿着一条相当不规则的路径铺设。栅栏可以用一个字符串表示,每个字符为 "N"(north,北)、"E"(east,东)、"S"(south,南)、"W"(west,西)之一。每个字符表示一米长的一段栅栏。举例来说,如果字符串为 NESW,这表示栅栏从起点开始向北延伸 1 米,然后向东延伸 1 米,然后向南延伸 1 米,然后向西延伸 1 米,回到栅栏的起点。

栅栏的结束位置与开始位置相同,而这是栅栏的路径上唯一会被到达多次的位置(从而起始位置是唯一会被再次到达的位置,在栅栏结束之时)。结果,栅栏确实围起了一个草地上连通的区域,尽管这个区域可能形状十分奇特。

Farmer John 想要知道他铺设栅栏的路径是顺时针(当按字符串表示的顺序沿着栅栏的路径行走时被围起的区域位于右侧)还是逆时针(被围起的区域位于左侧)。

输入格式(从终端 / 标准输入读入):

输入的第一行包含一个整数 N(1<=N<=20)。以下 N 行每行包含一个长度不小于 4 且不超过 100 的字符串,表示一个栅栏的路径。

输出格式(输出至终端 / 标准输出):

对 N 条输入的栅栏路径的每一条,输出一行,为 "CW"(clockwise,顺时针)或 "CCW"(counterclockwise,逆时针)。

输入样例:

2

NESW

WSSSEENWNEESSENNNNWWWS

输出样例:

CW

CCW

以下为这两条栅栏路径,用 @ 表示起始位置:

*>*

^ v

@<*

 *<*<*<*

 v     ^

*<@     *

v       ^

* *>*>* *

v ^   v ^

* *<* * *

v   ^ v ^

*>*>* *>*

供题:Brian Dean

1. #include <iostream>
2. #include <cstdio>
3. #include <string>
4. using namespace std;
5. int n;
6. string s;
7. 
8. int angle(char a,char b){
9.  if(a==b)return 0;
10.   else if(a=='E'&&b=='N') return 90;
11.   else if(a=='N'&&b=='W') return 90;
12.   else if(a=='W'&&b=='S') return 90;
13.   else if(a=='S'&&b=='E') return 90;
14.   else if(a=='E'&&b=='S') return -90;
15.   else if(a=='S'&&b=='W') return -90;
16.   else if(a=='W'&&b=='N') return -90;
17.   else if(a=='N'&&b=='E') return -90;
18. }
19. 
20. void clockwinse(string ts,int ls){
21.   int tj=0;
22.   for(int i=0;i<ls-1;i++)
23.     tj+=angle(ts[i],ts[i+1]);
24.   tj+=angle(ts[ls-1],ts[0]);
25.   if(tj<0) cout<<"CW"<<endl;
26.   else cout<<"CCW"<<endl;
27. }
28. 
29. int main()
30. {
31.   cin>>n;
32.   for(int i=1;i<=n;i++){
33.     cin>>s;
34.     clockwinse(s,s.size());
35.   }
36. return 0;
37. }

下载测试数据

相关文章
|
XML Java Maven
【Maven技术专题】「实战开发系列」盘点Maven项目中打包需要注意到的那点事儿
【Maven技术专题】「实战开发系列」盘点Maven项目中打包需要注意到的那点事儿
410 1
|
存储 监控 安全
前端框架的数据驱动方式如何保证数据的安全性?
总之,前端框架的数据驱动方式需要综合运用多种手段来保证数据的安全性。从传输、存储、访问控制到防范攻击等各个方面进行全面考虑和实施,以确保用户数据的安全可靠。同时,不断加强安全管理和技术创新,以应对不断变化的安全挑战。
458 60
|
9月前
|
数据采集 Prometheus Cloud Native
架构革新:揭示卓越性能与高可扩展的共赢秘诀
为了构建现代化的可观测数据采集器LoongCollector,iLogtail启动架构通用化升级,旨在提供高可靠、高可扩展和高性能的实时数据采集和计算服务。然而,通用化的过程总会伴随性能劣化,本文重点介绍LoongCollector的性能优化之路,并对通用化和高性能之间的平衡给出见解。
架构革新:揭示卓越性能与高可扩展的共赢秘诀
|
JSON 中间件 数据格式
Gin框架学习笔记(六)——gin中的日志使用
Gin框架学习笔记(六)——gin中的日志使用
1093 0
|
SQL 域名解析 安全
RaspberryPi(树莓派)安装 MariaDB / MySQL 数据库
本文主要为大家讲解如何在RaspberryPi(树莓派)系统上安装 MariaDB / MySQL 数据库。
3859 0
RaspberryPi(树莓派)安装 MariaDB / MySQL 数据库
|
存储 弹性计算 运维
阿里云无影云电脑具体价格表
阿里云无影云电脑具体价格表,无影云桌面4核8G企业办公型云电脑可以免费使用3个月,无影云电脑地域不同价格不同,无影云电脑价格是由云桌面配置、云盘价格、互联网访问带宽价格、AD Connector 价格、桌面组共用桌面session 价格等费用组成
478 0
|
存储 编译器 定位技术
结构体数组在C语言中的应用与优化策略
结构体数组在C语言中的应用与优化策略
|
JavaScript 前端开发 内存技术
Vue入门:构建你的第一个Vue应用程序
【4月更文挑战第22天】Vue.js 入门教程:安装 Node.js 和 npm,使用 Vue CLI (`npm install -g @vue/cli`) 创建项目,选择预设或自定义配置。在 `src/components/` 创建 `HelloWorld.vue` 组件,显示数据属性。在 `App.vue` 中引入并注册组件,启动开发服务器 (`npm run serve`) 预览。开始你的 Vue 之旅!
314 2
|
Java 数据库连接 数据库
深入了解Java中的MyBatis Plus注解 @FieldStrategy:灵活处理字段策略
在数据库操作中,对于字段的操作可能需要根据不同的业务需求,采取不同的处理策略,比如插入操作时某些字段需要强制设值,更新操作时某些字段需要忽略等。MyBatis Plus作为一款强大的ORM框架,提供了注解 `@FieldStrategy`,使开发者能够更加灵活地处理字段的操作策略,从而减少代码的重复和冗余。本文将详细介绍 `@FieldStrategy` 注解的用法及其在持久层开发中的应用。
2129 0
|
弹性计算 缓存 数据库
阿里云2核4G服务器优惠价格30元、165元和199元报价表
阿里云2核4G服务器优惠价格30元、165元和199元报价表,阿里云2核4G服务器多少钱一年?2核4G配置1个月多少钱?2核4G服务器30元3个月、轻量应用服务器2核4G4M带宽165元一年、企业用户2核4G5M带宽199元一年。可以在阿里云百科查看当前最新2核4G服务器精准报价、优惠券和活动信息