您的位置:首页 > 其它

NOIP 2008普及组 立体图

2017-08-12 17:07 337 查看
对于正在做这道题的同学,我遗憾地告诉你们,这道题就是坑倒dalao,防止AK(虽然08年好像还是有人AK了,orz)的纯模拟题,没有任何算法或者技巧。但是请不要绝望,我写出来也就是那么一个通宵的时间,下面附上源码,给予你们些许慰藉

#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;

char c[2001][2001];
int gz[55][55];
const char mb[][9]={""," +---+.."," |   |/."," |   | +"," +---+ |"," ./   /|"," ..+---+"};

int zuim=0,zuin=0;

void tc(int m,int n)
{
for(int i=0;i<6;i++){
for(int j=0;j<7;j++){
if(mb[i+1][j+1]!='.')
{
c[i+m][j+n]=mb[i+1][j+1];
if(i+m>zuim){
zuim=i+m;
}
if(j+n>zuin){
zuin=j+n;
}
}
}
}
}

int main()
{
int m,n,zuigao=1;
memset(gz,0,sizeof(gz));
scanf("%d%d",&m,&n);
for(int i=m;i>0;i--){
for(int j=1;j<=n;j++)
{
scanf("%d",&gz[i][j]);
if(gz[i][j]>zuigao){
zuigao=gz[i][j];
}
}
}

for(int i=0;i<2001;i++){
for(int j=0;j<2001;j++){
c[i][j]='.';
}
}

for(int i=m;i>0;i--){
for(int k=1;k<=n;k++){
for(int j=1;j<=gz[i][k];j++){
tc((j-1)*3+1+((i-1)*2),(k-1)*4+1+((i-1)*2));
}
}
}

for(int i=zuim;i>0;i--)
{
for(int j=1;j<=zuin;j++){
printf("%c",c[i][j]);
}
printf("\n");
}

return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  noip 模拟