HDU 6330.Problem L. Visual Cube-模拟到上天-输出立方体 (2018 Multi-University Training Contest 3 1012)

6330.Problem L. Visual Cube

这个题就是输出立方体。当时写完怎么都不过,后来输出b<c的情况,发现这里写挫了,判断失误。加了点东西就过了,mdzz。。。

代码:

 1 //1012-模拟乱写输出立方体
 2 #include<iostream>
 3 #include<cstdio>
 4 #include<cstring>
 5 #include<algorithm>
 6 #include<cmath>
 7 #include<cstdlib>
 8 using namespace std;
 9 typedef long long ll;
10 const int maxn=1e5+10;
11 
12 char a[200][200];
13 int main()
14 {
15      int t;
16      scanf("%d",&t);
17      while(t--){
18         int aa,b,c;
19         scanf("%d%d%d",&aa,&b,&c);
20         int x=c*2+1+b*2,y=aa*2+1+b*2;
21         for(int i=1;i<=x;i++){
22             for(int j=1;j<=y;j++)
23                 a[i][j]='.';
24         }
25         for(int i=1;i<=x;i++){
26             if(i<=2*b){
27                 if(i%2!=0){
28                     for(int j=2*b-i+2;j<=2*b-i+2+2*aa;j++){
29                         if((j-2*b-i+2+1)%2!=0) a[i][j]='+';
30                         else a[i][j]='-';
31                     }
32                     for(int j=2*b-i+2+2*aa+2;j<=y;j+=2)
33                         a[i][j]='+';
34                 }
35                 else{
36                     for(int j=2*b-i+2;j<=y;j+=2){
37                         a[i][j]='/';
38                     }
39                     for(int j=2*b-i+2+2*aa+1;j<=y;j+=2)
40                         a[i][j]='|';
41                 }
42             }
43             else if((i-2*b)>0&&(i-2*b)<=2*(c-b)+1){
44                     if((i-2*b)%2!=0){
45                         for(int j=1;j<=2*aa+1;j++){
46                             if((j-1+1)%2!=0) a[i][j]='+';
47                             else a[i][j]='-';
48                         }
49                         for(int j=2*aa+1+2;j<=y;j+=2)
50                             a[i][j]='+';
51                     }
52                     else{
53                         for(int j=1;j<=2*aa+1;j+=2)
54                             a[i][j]='|';
55                         for(int j=2*aa+1+1;j<=y;j++){
56                             if((j-2*aa-1-1+1)%2!=0) a[i][j]='/';
57                             else a[i][j]='|';
58                         }
59                     }
60             }
61             else{
62                 if((i-(2*c+1))%2!=0){
63                     for(int j=1;j<=2*aa+1;j+=2){
64                         a[i][j]='|';
65                     }
66                     for(int j=2*aa+1+1;j<=y-(i-(2*c+1));j++){
67                         if((j-2*aa-1-1+1)%2!=0) a[i][j]='/';
68                         else a[i][j]='|';
69                     }
70                 }
71                 else{
72                     for(int j=1;j<=2*aa+1;j++){
73                         if((j-1+1)%2!=0) a[i][j]='+';
74                         else a[i][j]='-';
75                     }
76                     for(int j=2*aa+1+2;j<=y-(i-(2*c+1));j+=2)
77                         a[i][j]='+';
78                 }
79             }
80         }
81         if(c<b){//这种情况要判断一下
82             for(int i=2*c+1+1;i<=x;i++){
83                 for(int j=y;j>=y-i+2*c+2;j--)
84                     a[i][j]='.';
85             }
86         }
87         for(int i=1;i<=x;i++){
88             for(int j=1;j<=y;j++){
89                 cout<<a[i][j];
90             }
91             cout<<endl;
92         }
93      }
94 }

。。。

原文地址:https://www.cnblogs.com/ZERO-/p/9413985.html