最开始写的时候很乱,想了大概就动手写了,到后来一直WA(要多测几组自己的样例)心态崩了,改循环的时候就一次次凭感觉改输出看效果,感觉冷静不下来去想了。出去上个厕所冷静一下之后回来重新先梳理一遍,又新开了个工程开始写orz 就,不是特别难的模拟,也没卡时间啥的,但是要耐心耐心耐心,而且要细心!这题写了三个多小时……唉
#include <bits/stdc++.h>
using namespace std;
#define totalh 2*z+2*y+1
#define totall 2*x+2*z+1
int T, x, y, z;
int main()
{
scanf("%d", &T);
while(T)
{
scanf("%d%d%d", &x, &z, &y);
int dotcnt = 0;
for(int h = 1;h <= totalh;h++)
{
if(totalh - h < 2*z)
dotcnt++;
int hangcnt = 0;
for(int l = 1;l <= totall;l++)
{
if(h <= 2*z && l <= 2*z-h+1)
{
printf(".");
continue;
}
if(hangcnt < 2*x+1 && h <= 2*z)
{
if(h%2 == 1)
{
if(l%2 != 0)
printf("+");
else
printf("-");
}
else
{
if(l%2 != 0)
printf(".");
else
printf("/");
}
hangcnt++;
continue;
}
if(hangcnt < 2*x+1 && h > 2*z)
{
if(h%2 == 1)
{
if(l%2 != 0)
printf("+");
else
printf("-");
}
else
{
if(l%2 != 0)
printf("|");
else
printf(".");
}
hangcnt++;
continue;
}
//if(totalh - h >= 2*z)
//{
if(totall - l - dotcnt >= 0)
{
//cout << totall - l << "- " << dotcnt;
if(h % 2==0)
{
if(l%2==0)
printf("/");
else
printf("|");
}
else
{
if(l%2==0)
printf(".");
else
printf("+");
}
continue;
}
else
printf(".");
//}
}
printf("\n");
}
//printf("\n");
T--;
}
return 0;
}