题目直通:http://acm.hdu.edu.cn/showproblem.php?pid=6330
Problem Description
Little Q likes solving math problems very much. Unluckily, however, he does not have good spatial ability. Everytime he meets a 3D geometry problem, he will struggle to draw a picture.
Now he meets a 3D geometry problem again. This time, he doesn't want to struggle any more. As a result, he turns to you for help.
Given a cube with length a, width b and height c, please write a program to display the cube.
Input
The first line of the input contains an integer T(1≤T≤50), denoting the number of test cases.
In each test case, there are 3 integers a,b,c(1≤a,b,c≤20), denoting the size of the cube.
Output
For each test case, print several lines to display the cube. See the sample output for details.
Sample Input
2 1 1 1 6 2 4
Sample Output
..+-+ ././| +-+.+ |.|/. +-+.. ....+-+-+-+-+-+-+ .../././././././| ..+-+-+-+-+-+-+.+ ./././././././|/| +-+-+-+-+-+-+.+.+ |.|.|.|.|.|.|/|/| +-+-+-+-+-+-+.+.+ |.|.|.|.|.|.|/|/| +-+-+-+-+-+-+.+.+ |.|.|.|.|.|.|/|/. +-+-+-+-+-+-+.+.. |.|.|.|.|.|.|/... +-+-+-+-+-+-+....
题解:做这题牢记八字真言:别慌 稳住 我们能赢。
#include<cstdio>
char s[1000][1000];
void init(){for(int i=1;i<=500;i++){for(int j=1;j<=500;j++){s[i][j]='.';}}
}
int main()
{int t;scanf("%d",&t);while(t--){init();int a,b,c;scanf("%d%d%d",&a,&b,&c);for(int i=1;i<=b+b+c+c+1;i++){if(i<=b+b){if(i%2==1){int j;for(j=b+b-i+2;j<=a+a+1+b+b-i;j++){if(j%2==1)s[i][j]='+';else s[i][j]='-';}for(;j<=a+a+1+b+b;j++){if(j%2==1)s[i][j]='+';}}else{int j;for(j=b+b-i+2;j<=a+a+1+b+b-i;j++){if(j%2==0){s[i][j]='/';}}for(;j<=a+a+1+b+b;j++){if(j%2==0){s[i][j]='/';}else s[i][j]='|';}}}else if(i<=c+c+1){if(i%2==1){int j;for(j=1;j<=a+a;j++){if(j%2==1)s[i][j]='+';else s[i][j]='-';}for(;j<=a+a+1+b+b;j++){if(j%2==1)s[i][j]='+';}}else{int j;for(j=1;j<=a+a;j++){if(j%2==1)s[i][j]='|';}for(;j<=a+a+1+b+b;j++){if(j%2==1)s[i][j]='|';else s[i][j]='/';}}}else{if(i%2==1){int j;for(j=1;j<=a+a;j++){if(j%2==0){s[i][j]='-';}else s[i][j]='+';}for(;j<=a+a+2-i+b+b+c+c;j++){if(j%2==1){s[i][j]='+';}}}else{int j;for(j=1;j<=a+a;j++){if(j%2==1){s[i][j]='|';}}for(;j<=a+a+2-i+b+b+c+c;j++){if(j%2==1){s[i][j]='|';}else{s[i][j]='/';}}}}}int k=1;for(int i=(c+c+1+b+b);i>=(c+c+1);i--){for(int j=a+a+1+k;j<=a+a+1+b+b;j++){s[i][j]='.';}k++;}for(int i=1;i<=c+c+1+b+b;i++){for(int j=1;j<=b+b+a+a+1;j++){printf("%c",s[i][j]);}printf("\n");}}return 0;
}