UVa 10800 - Not That Kind of Graph
2015-09-24 19:16
841 查看
題目:給你三個字母組成的序列繪製一個字符圖片,包括坐標軸;
R(繪製‘/’,光標右上移動),F(光標右下移動,繪製'\'),C(繪製'-'光標右移)。
分析:模擬。在一個105*55的底板上繪製,然後打印輸出。
1.圖像上面到達上界,下面到達坐標軸;
2.y軸和圖像,圖像和右邊界各有一行空餘;
3.每行結尾不能有多餘空格;
4.圖像結束后有一行空行。
說明:注意輸出格式。
R(繪製‘/’,光標右上移動),F(光標右下移動,繪製'\'),C(繪製'-'光標右移)。
分析:模擬。在一個105*55的底板上繪製,然後打印輸出。
1.圖像上面到達上界,下面到達坐標軸;
2.y軸和圖像,圖像和右邊界各有一行空餘;
3.每行結尾不能有多餘空格;
4.圖像結束后有一行空行。
說明:注意輸出格式。
#include <cstring> #include <cstdio> char buf[55]; char maps[105][55]; int main() { int n; while (~scanf("%d",&n)) for (int k = 1; k <= n; ++ k) { scanf("%s",buf); //绘制底板 memset(maps, 0, sizeof(maps)); int max = 50, min = 52, now = 51, len = 0; for (int i = 0; buf[i]; ++ i) { if (buf[i] == 'F') maps[-- now][i+2] = '\\'; if (min > now) min = now; if (buf[i] == 'C') maps[now][i+2] = '_'; if (max < now) max = now; if (buf[i] == 'R') maps[now ++][i+2] = '/'; len = i+3; } //绘制坐标轴 maps[min-1][0] = '+'; for (int i = 1; i <= len; ++ i) maps[min-1][i] = '-'; //填充底板 for (int i = min; i <= max; ++ i) { maps[i][0] = '|'; int move = len; while (!maps[i][move]) -- move; while (-- move > 0) if (!maps[i][move]) maps[i][move] = ' '; } //打印输出 printf("Case #%d:\n",k); for (int i = max; i >= min-1; -- i) puts(maps[i]); puts(""); } return 0; }
相关文章推荐
- 字符串,数值,一些工具,熟练的话开发速度提高
- LeetCode:PerfectSquares
- 【读书笔记】iOS-NSDate
- hadoop在put数据时,出现org.apache.hadoop.hdfs.server.namenode.NotReplicatedYetException 分析
- 【读书笔记】iOS-NSDate
- 杭电4510为什么时光不能倒流
- HDU 5464 Clarke and problem(类01背包)
- 点击事件的传递/实现下拉刷新/手势检测
- 白话经典算法系列之五 归并排序的实现
- 不使用c++内置的sqrt,求平方根
- 地图市场-文学市场-医药市场
- UICollectionViewFlowLayout 设置九宫格的大小间距
- Java学习笔记【包】
- vbs/QTP进程/任务栏操作
- HDU 3038 How Many Answers Are Wrong (带权并查集)
- C++中使用array报错 requires compiler and library surpport for the ISO c++ 2011 standard
- Java 十大异常报错
- Android动画学习笔记-Android Animation
- Android学习实践:6.应用主题和布局
- Android动画详解