Problem L. Visual Cube HDU - 6330 (模拟,构建)

Problem L. Visual Cube

 题目连接:HDU - 6330 

题意:给出三个数x, y, z,分别对应一个立方体的长宽高;

要求打印出这么一个立方体;

根据题目样例不难找出规律;

首先上部分就是答打印上面,下部分打印下面最后补齐边角的点就可以了;

#include <bits/stdc++.h>
using namespace std;
char cub[200][200];
int main(){
	int T;
	scanf("%d", &T);
	while(T--){
		int x, y, h;
		scanf("%d%d%d", &x, &y, &h);
		int n, m;
		n=2*h+2*y+1;
		m=2*x+2*y+1;
		int i, j, p, q;
		for(i=1, p=2*y, q=0; i<=2*y; i+=2, p-=2, q+=2){
			for(j=1; j<=p; j+=2){
				cub[i][j]='.';
				cub[i][j+1]='.';
				cub[i+1][j]='.';
				cub[i+1][j+1]='.';
			}
			for(int k=1; j<=m&&k<=2*x; j+=2, k+=2){
				cub[i][j]='+';
				cub[i][j+1]='-';
				cub[i+1][j-1]='/';
				cub[i+1][j]='.';
			}
			for( ; j<=m; j+=2){
				cub[i][j]='+';
				cub[i][j+1]='.';
				cub[i+1][j-1]='/';
				cub[i+1][j]='|';
			}
		}
		for( ; i<=n; i+=2){
			for(j=1; j<=2*x; j+=2){
				cub[i][j]='+';
				cub[i][j+1]='-';
				cub[i+1][j]='|';
				cub[i+1][j+1]='.';
			}
			for( ; j<=m; j+=2){
				cub[i][j]='+';
				cub[i][j+1]='.';
				cub[i+1][j]='|';
				cub[i+1][j+1]='/';
			}
		}
		for(i=2*h+1, p=-1; i<=n; i++, p++){
			for(j=m-p; j<=m; j++){
				cub[i][j]='.';
			}
		}
		for(i=1; i<=n; i++){
			for(j=1; j<=m; j++){
				printf("%c", cub[i][j]);
			}
			puts("");
		}
	}
	return 0;
}

猜你喜欢

转载自blog.csdn.net/Sirius_han/article/details/81318710