我是比较讨厌写模拟题的,场上交给队友了,自己没有写,想了想还是补补把=-=。
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6330
题意:给你三个值,x,y,z,分别代表,长方体的长宽高。让你打印这个图形。
题解:模拟一下就过了,没什么难度。
#include<bits/stdc++.h>
using namespace std;
char a[100][100];
int main(){
int z;
cin >> z;
while(z--){
int x,y,z;
scanf("%d%d%d",&x,&y,&z);
int n = 2*y + (2*z+1);int m = y*2 + (x*2+1);
for(int i = 0 ; i <= 100 ; i ++)
for(int j = 0 ; j <= 100 ; j ++)
a[i][j] = '.';
for(int i = 1 ; i <= 2*y ; i ++){
if(i&1){
for(int j = m - i+1 ; j >= m - x*2+1 - i; j -- ){
if(j&1)
a[i][j] = '+';
else
a[i][j] = '-';
}
}
else {
for(int j = m - i+1 ; j >= m - x*2+1 - i; j -- ){
if(j&1)
continue;
else
a[i][j] = '/';
}
}
}
for(int i = 2*y + 1 ; i <= n ; i ++){
if(i&1){
for(int j = 1 ; j <= x*2+1; j ++ ){
if(j&1)
a[i][j] = '+';
else
a[i][j] = '-';
}
}
else {
for(int j = 1 ; j <= x*2+1; j ++ ){
if(!(j&1))
continue;
else
a[i][j] = '|';
}
}
}
int cnt = 0;
for(int i = m ; i >= m - 2*y +1; i --){
if(i&1){
for(int j = 1+cnt ; j <= 2*z +1+ cnt; j ++ ){
if(j&1)
a[j][i] = '+';
else
a[j][i] = '|';
}
}
else {
for(int j = 1 +cnt; j <= 2*z + 1 +cnt; j ++ ){
if(j&1)
continue;
else
a[j][i] = '/';
}
}
cnt++;
}
for(int i = 1 ; i <= n ; i ++){
for(int j = 1; j <= m ; j ++)
cout << a[i][j] ;
cout << endl;
}
}
return 0;
}