vijos1497立体图

哈哈哈这道题实在太可爱了w

题目链接

刚看到感觉这题好难啊,怎么可能是2级……一写发现完全没有难度,只要仔细就可以啦w

需要注意的点:

·不知道有没有人和我习惯一样,坐标系画图时的方向和日常定义数组的方向不一样orz

·保存左上角与右下角的坐标,不断更新

·起始点要保证所有点都能画在mapp图里

(写得不好看但应该能看的代码)

#include<iostream>
#include<cstring>
#include<cstdio>
#include<algorithm>
using namespace std;
#define ll long long
int max1=23333,max2=23333,max3=0,max4=0;
int n,m,a[51][51];
char mapp[23333][23333];
void qwq(int x,int y){
	max1=min(max1,x);max2=min(max2,y);
	max3=max(max3,x+6);max4=max(max4,y+5);
	mapp[x+2][y]=mapp[x+6][y]=mapp[x][y+2]=mapp[x+4][y+2]=mapp[x][y+5]=mapp[x+4][y+5]=mapp[x+6][y+3]=43;
	mapp[x+3][y]=mapp[x+4][y]=mapp[x+5][y]=mapp[x+1][y+2]=mapp[x+2][y+2]=mapp[x+3][y+2]=mapp[x+1][y+5]=mapp[x+2][y+5]=mapp[x+3][y+5]='-';
	mapp[x+1][y+1]=mapp[x+5][y+1]=mapp[x+5][y+4]=47;
	mapp[x][y+3]=mapp[x][y+4]=mapp[x+4][y+3]=mapp[x+4][y+4]=mapp[x+6][y+1]=mapp[x+6][y+2]=124; 
	mapp[x+3][y+1]=mapp[x+4][y+1]=mapp[x+2][y+1]=mapp[x+1][y+3]=mapp[x+2][y+3]=mapp[x+3][y+3]=mapp[x+1][y+4]=mapp[x+2][y+4]=mapp[x+3][y+4]=mapp[x+5][y+2]=mapp[x+5][y+3]=' ';
} 
void init(){
	for(int i=1;i<=2333;i++)
	for(int j=1;j<=2333;j++)mapp[i][j]=46;
}

int main(){
	scanf("%d%d",&m,&n);
	for(int i=1;i<=m;i++)
	for(int j=1;j<=n;j++)scanf("%d",&a[i][j]);
	int q1=150;int q2=350;
	init();
	for(int i=1;i<=m;i++){
		q1-=2;q2+=2;
	for(int j=1;j<=n;j++){
		q1+=4;
	for(int k=1;k<=a[i][j];k++){
		q2-=3;qwq(q1,q2);
	}
	q2+=3*a[i][j];
    }
    q1-=4*n;
}
	for(int i=max2;i<=max4;i++){
		for(int j=max1;j<=max3;j++){
			cout<<mapp[j][i];
		}
		printf("\n");
	}
	return 0;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值