已有网站做移动网站,网站手机端做app开发工具,东莞网络推广系统,网站服务器怎么查询题4#xff1a;立体图
【题目描述】
小渊是个聪明的孩子#xff0c;他经常会给周围的小朋友讲些自己认为有趣的内容。最近#xff0c;他准备给小朋友讲解立体图#xff0c;请你帮他画出立体图。
小渊有一块面积为mn的矩形区域#xff0c;上面有mn个边长为1的格子#…题4立体图
【题目描述】
小渊是个聪明的孩子他经常会给周围的小朋友讲些自己认为有趣的内容。最近他准备给小朋友讲解立体图请你帮他画出立体图。
小渊有一块面积为mn的矩形区域上面有mn个边长为1的格子每个格子上堆了一些同样大小的积木积木的长宽高都是1小渊想请你打印出这些格子的立体图。我们定义每个积木为如下格式并且不会做任何翻转旋转只会严格以一种形式摆放。 每个顶点用1个加号“表示,长用3个”-“表示,宽用1个”/“表示,高用两个”|“表示。符号”“,”-“,”/“,”|“的ASCII码分别是43,45,47,124。字符”.“(ASCII码46)需要作为背景输出即立体图中的空白部分需要用”.来代替。立体图的画法如下面的规则
若两块积木左右相邻图示为 若两块积木上下相邻图示为 若两块积木前后相邻图示为 立体图中定义位于第(m,1)的格子即第m行第1列的格子上面的自底向上的第一块积木即最下面的一块积木的左下角顶点为整张图最左下角的点。
【输入文件】
第一行有用空格隔开的2个整数m和n表示有m*n个格子1m,n50)。
接下来的m行是一个m*n的矩阵每行有n个用空格隔开的整数其中第i行第j列上的整数表示第i行第j列的格子上摞有多少个积木1每个格子上的积木数100)。
【输出文件】
包含题目要求的立体图是一个K行L列的字符矩阵其中K和L表示最少需要K行L列才能按规定输出立体图。
【输入样例1】
3 4 2 2 1 2 2 2 1 1 3 2 1 2
【输出样例1】 【代码如下】 #include bits/stdc.h
using namespace std;
char s[600][600];
void hua(int y, int x) {s[y][x] ;s[y][x 1] -;s[y][x 2] -;s[y][x 3] -;s[y][x 4] ;s[y 1][x] |;s[y 1][x 1] ;s[y 1][x 2] ;s[y 1][x 3] ;s[y 1][x 4] |;s[y 1][x 5] /;s[y 2][x] |;s[y 2][x 1] ;s[y 2][x 2] ;s[y 2][x 3] ;s[y 2][x 4] |;s[y 2][x 5] ;s[y 2][x 6] ;s[y 3][x] ;s[y 3][x 1] -;s[y 3][x 2] -;s[y 3][x 3] -;s[y 3][x 4] ;s[y 3][x 5] ;s[y 3][x 6] |;s[y 4][x 1] /;s[y 4][x 2] ;s[y 4][x 3] ;s[y 4][x 4] ;s[y 4][x 5] /;s[y 4][x 6] |;s[y 5][x 2] ;s[y 5][x 3] -;s[y 5][x 4] -;s[y 5][x 5] -;s[y 5][x 6] ;
}
int main(int argc, char *argv[]) {int a[55][55];int x1, y1, t, x, y;int i, j, k;int m, n;cin m n;x1 4 * n 2 * m 1;y1 0;for (i 0; i m; i)for (j 0; j n; j) {cin a[i][j];t 3 * a[i][j] 2 * (m - i) 1;if (t y1) y1 t;}for (i 0; i y1; i)for (j 0; j x1; j) s[i][j] .;for (i 0; i m; i)for (j 0; j n; j)for (k 0; k a[i][j]; k) {x 2 * (m - i - 1) 4 * j;y 2 * (m - i - 1) 3 * k;hua(y, x);}for (i y1 - 1; i 0; i--) {for (j 0; j x1; j) cout s[i][j];if (i 0) {cout endl;}}return 0;
}