L - Problem L. Visual Cube HDU - 6330

### 思路  

按要求打印方块

  注意考虑边界棱的问题
  宽和高的差值可能为负数(这里分了b-c>=0和b-c< 0两种情况,分开画)

### 代码

  1 #include <bits/stdc++.h>
  2 #include <iostream>
  3 #include <cstring>
  4 #include <stack>
  5 #include <cstdlib>
  6 #include <queue>
  7 #include <cmath>
  8 #include <cstdio>
  9 #include <algorithm>
 10 #include <string>
 11 #include <vector>
 12 #include <list>
 13 #include <iterator>
 14 #include <set>
 15 #include <map>
 16 #include <utility>
 17 #include <iomanip>
 18 #include <ctime>
 19 #include <sstream>
 20 #include <bitset>
 21 #include <deque>
 22 #include <limits>
 23 #include <numeric>
 24 #include <functional>
 25 
 26 #define gc getchar()
 27 #define mem(a) memset(a,0,sizeof(a))
 28 #define mod 1000000007
 29 #define sort(a,n,int) sort(a,a+n,less<int>())
 30 #define fread() freopen("in.in","r",stdin)
 31 #define fwrite() freopen("out.out","w",stdout)
 32 using namespace std;
 33 
 34 typedef long long ll;
 35 typedef char ch;
 36 typedef double db;
 37 
 38 const int maxn=1e5+10;
 39 //ll a[maxn];
 40 int aa[maxn];
 41 
 42 int main()
 43 {
 44 int t;
 45 cin>>t;
 46 while(t--)
 47 {
 48     int a , b , c;
 49     cin>>a>>b>>c;
 50     if(c>b)
 51     {
 52         
 53     for(int i = 0;i<2*b;i++)
 54     {
 55         for(int j = 0;j<2*b-i;j++) 
 56             cout<<'.';
 57         if(i%2)
 58         {
 59             for(int j = 0;j <a;j++)
 60             {
 61                 cout<<"/.";
 62             }
 63             cout<<'/';
 64         }
 65         else
 66         {
 67             for(int j = 0;j <a;j++)
 68             {
 69                 cout<<"+-";
 70             }
 71             cout<<'+';
 72         }
 73         for(int j = 0;j<i/2;j++)
 74         {
 75             if(i%2)
 76                 cout<<"|/"; 
 77             else
 78                 cout<<".+";
 79         }
 80         if(i%2)
 81             cout<<'|';
 82 
 83         cout<<endl;
 84     }
 85     for(int i = 0;i<(c-b)*2;i++)
 86     {
 87         if(i%2)
 88         {
 89             for(int j = 0;j<a;j++)
 90                 cout<<"|.";
 91             cout<<'|';
 92             for(int j = 0;j<b;j++)
 93                 cout<<"/|";
 94         }
 95         else
 96         {
 97             for(int j = 0;j<a;j++)
 98                 cout<<"+-";
 99             cout<<'+';
100             for(int j = 0;j<b;j++)
101                 cout<<".+";
102         }
103         cout<<endl;
104     }
105     for(int i = 0;i<2*b+1;i++)
106     {
107         if(i%2)
108         {
109             for(int j = 0;j<a;j++)
110                 cout<<"|.";
111             cout<<'|';
112             for(int j = 0;j<(2*b-i-1)/2;j++)
113                 cout<<"/|";
114             cout<<'/'; 
115         }
116         else
117         {
118             for(int j = 0;j<a;j++)
119                 cout<<"+-";
120             cout<<'+';
121             for(int j = 0;j<(2*b-i)/2;j++)
122                 cout<<".+";
123         }
124         for(int j = 0;j<i;j++)
125             cout<<'.';
126         cout<<endl;
127     }
128     
129     }
130     else
131     {
132         
133     for(int i = 0;i<2*c;i++)
134     {
135         for(int j = 0;j<2*b-i;j++) 
136             cout<<'.';
137         if(i%2)
138         {
139             for(int j = 0;j <a;j++)
140             {
141                 cout<<"/.";
142             }
143             for(int j = 0;j <i/2+1;j++)
144             {
145                 cout<<"/|";
146             }
147         }
148         else
149         {
150             for(int j = 0;j <a;j++)
151             {
152                 cout<<"+-";
153             }
154             cout<<'+';
155             for(int j = 0;j <i/2;j++)
156             {
157                 cout<<".+";
158             }
159         }
160         cout<<endl;
161     }
162     for(int i = 0;i<(b-c)*2;i++)
163     {
164         for(int j = 2*c;j<2*b-i;j++) 
165             cout<<'.';
166         if(i%2)
167         {
168             for(int j = 0;j <a;j++)
169             {
170                 cout<<"/.";
171             }
172             for(int j = 0;j <c;j++)
173             {
174                 cout<<"/|";
175             }
176             cout<<'/';
177         }
178         else
179         {
180             for(int j = 0;j <a;j++)
181             {
182                 cout<<"+-";
183             }
184             cout<<'+';
185             for(int j = 0;j <c;j++)
186             {
187                 cout<<".+";
188             }
189         }
190         for(int j = 0;j<i;j++)
191         {
192             cout<<'.';
193         }
194         cout<<endl;
195     }
196     for(int i = 0;i<2*c+1;i++)
197     {
198         if(i%2)
199         {
200             for(int j = 0;j <a;j++)
201             {
202                 cout<<"|.";
203             }
204             cout<<'|';
205             for(int j = 0;j <(2*c-i)/2;j++)
206             {
207                 cout<<"/|";
208             }
209             cout<<'/';
210         }
211         else
212         {
213             for(int j = 0;j <a;j++)
214             {
215                 cout<<"+-";
216             }
217             cout<<'+';
218             for(int j = 0;j <(2*c-i)/2;j++)
219             {
220                 cout<<".+";
221             }
222         }
223         for(int j = 0;j<2*b-2*c+i;j++)
224         cout<<'.';
225         
226         cout<<endl;
227     }
228     
229     }
230 }
231 }

 

转载于:https://www.cnblogs.com/SutsuharaYuki/p/11224215.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值