hduoj----(1033)Edge
Edge
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 1590 Accepted Submission(s): 1040
Problem Description
For products that are wrapped in small packings it is necessary that the sheet of paper containing the directions for use is folded until its size becomes small enough. We assume that a sheet of paper is rectangular and only folded along lines parallel to its initially shorter edge. The act of folding along such a line, however, can be performed in two directions: either the surface on the top of the sheet is brought together, or the surface on its bottom. In both cases the two parts of the rectangle that are separated by the folding line are laid together neatly and we ignore any differences in thickness of the resulting folded sheet. After several such folding steps have been performed we may unfold the sheet again and take a look at its longer edge holding the sheet so that it appears as a one-dimensional curve, actually a concatenation of line segments. If we move along this curve in a fixed direction we can classify every place where the sheet was folded as either type A meaning a clockwise turn or type V meaning a counter-clockwise turn. Given such a sequence of classifications, produce a drawing of the longer edge of the sheet assuming 90 degree turns at equidistant places.
Input
The input contains several test cases, each on a separate line. Each line contains a nonempty string of characters A and V describing the longer edge of the sheet. You may assume that the length of the string is less than 200. The input file terminates immediately after the last test case.
Output
For each test case generate a PostScript drawing of the edge with commands placed on separate lines. Start every drawing at the coordinates (300, 420) with the command "300 420 moveto". The first turn occurs at (310, 420) using the command "310 420 lineto". Continue with clockwise or counter-clockwise turns according to the input string, using a sequence of "x y lineto" commands with the appropriate coordinates. The turning points are separated at a distance of 10 units. Do not forget the end point of the edge and finish each test case by the commands stroke and showpage. You may display such drawings with the gv PostScript interpreter, optionally after a conversion using the ps2ps utility.
Sample Input
V AVV
Sample Output
300 420 moveto 310 420 lineto 310 430 lineto stroke showpage 300 420 moveto 310 420 lineto 310 410 lineto 320 410 lineto 320 420 lineto stroke showpage
Source
University of Ulm Local Contest 2003
简单的模拟既可以过掉....15ms吧!,选择了switch(),耗掉了些时间,个人是这么觉得的...
代码:
1 #include<stdio.h>
2 #include<string.h>
3 #include<stdlib.h>
4 #define maxn 205
5 char str[maxn];
6 int main()
7 {
8 int len,i,x,y;
9 char dir; //记录 up,down,left,right
10 while(scanf("%s",str)!=EOF)
11 {
12 len=strlen(str);
13 if(len==0)
14 return 0;
15 printf("300 420 moveton310 420 lineton");
16 x=310,y=420;
17 dir='r'; //初始化为向右
18 for(i=0;i<len;i++)
19 {
20
21 if(str[i]=='A')
22 {
23 /*顺时针方向进行*/
24 switch(dir)
25 {
26 case 'u': x+=10,dir='r'; break;
27 case 'd': x-=10,dir='l'; break;
28 case 'r': y-=10,dir='d'; break;
29 case 'l': y+=10,dir='u'; break;
30 }
31 }
32 else if(str[i]=='V')
33 {
34 /*逆时针方向*/
35 switch(dir)
36 {
37 case 'u': x-=10,dir='l';break;
38 case 'd': x+=10,dir='r';break;
39 case 'r': y+=10,dir='u';break;
40 case 'l': y-=10,dir='d';break;
41 }
42 }
43 printf("%d %d lineton",x,y);
44 }
45 printf("strokenshowpagen");
46 }
47 return 0;
48 }
- 独家: iOS是如何收集用户的地理信息的
- Hygieia 为何物?DevOps 利器也
- 汽车攻击离你很近:一分钟变成汽车黑客
- LIFX智能灯泡漏洞泄露WIFI密码
- android ViewPager+Fragment之懒加载
- 逆向APK进行smali注入实现“秒破WIFI”
- 我所理解的Android 启动模式
- 搭建开源入侵检测系统Snort,并实现与防火墙联动
- 如何在Python中为长短期记忆网络扩展数据
- android 开发Handler源码剖析
- Keras作为TensorFlow的简化界面:教程
- Android基础:Fragment,看这篇就够了
- Rest api简介
- crossdomain.xml文件配置不当利用手法
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- TensorFlow-手写数字识别(二)
- TensorFlow-手写数字识别(一)
- OpenCV-简易答题卡识别
- Flink 原理详解
- FreeRTOS例程2-任务挂起恢复与使用中断遇到的坑!
- Puppeteer自动化的性能优化与执行速度提升
- PyTorch1: 张量的性质
- 分治算法
- 基于 Nginx + PHP-FPM 作为 HTTP 服务器
- 玩转 PhpStorm 系列(五):代码模板篇
- 通过 PDO 扩展与 MySQL 数据库交互(上)
- 通过 PDO 扩展与 MySQL 数据库交互(下)
- 使用 Vue 3.0,你可能不再需要Vuex了
- 浅析小程序云原生数据库设计与应用
- 实战丨用云开发快速构建信息申报小程序