Problem L. Visual Cube
题意:给出三个数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;
}