(2018 Multi-University Training Contest 3)Problem L. Visual Cube
//题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6330
//题目大意:按照一定格式画出一个 a×b×c 的长方体。
//解题思路:计算画布大小以及各个关键位置的坐标。按照格式将画布填充正确。逐步覆盖就对了,csy说这是全场最简单的题!虽然我们是第三个做的~
1 #include <bits/stdc++.h> 2 using namespace std; 3 char s[100][100]; 4 int main() 5 { 6 int T; 7 scanf("%d",&T); 8 while(T--) 9 { 10 int a,b,c; 11 scanf("%d%d%d",&a,&b,&c); 12 int m=2*b+2*a+1; 13 int n=2*b+2*c+1; 14 for(int i=1;i<=n;i++) 15 { 16 for(int j=1;j<=m;j++) 17 { 18 if(i%2==1&&j%2==1) 19 { 20 s[i][j]='+'; 21 } 22 else if(i%2==1&&j%2==0) 23 { 24 s[i][j]='.'; 25 } 26 else if(i%2==0&&j%2==1) 27 { 28 s[i][j]='|'; 29 } 30 else 31 { 32 s[i][j]='/'; 33 } 34 } 35 } 36 for(int i=1;i<=2*b;i++) 37 { 38 for(int j=2*b+1-i;j>=1;j--) 39 { 40 s[i][j]='.'; 41 } 42 } 43 for(int i=n-2*b+1;i<=n;i++) 44 { 45 for(int j=m-2*b+1+(n-i);j<=m;j++) 46 { 47 s[i][j]='.'; 48 } 49 } 50 for(int i=1;i<=2*b;i++) 51 { 52 for(int j=2*b+3-i;j<=m-i;j+=2) 53 if(i%2==1) 54 s[i][j]='-'; 55 else 56 s[i][j]='.'; 57 } 58 for(int i=2*b+1;i<=n;i++) 59 { 60 for(int j=2;j<=2*a;j+=2) 61 { 62 if(i%2==1) 63 s[i][j]='-'; 64 else 65 s[i][j]='.'; 66 } 67 } 68 for(int i=1;i<=n;i++) 69 { 70 for(int j=1;j<=m;j++) 71 { 72 cout<<s[i][j]; 73 } 74 cout<<endl; 75 } 76 } 77 78 }