立体图 80 wa 球调
查看原帖
立体图 80 wa 球调
638141
Literally楼主2024/12/10 18:00

玄3关?

代码带调试信息的

record

#include <bits/stdc++.h>
using namespace std;
int m,n,x,y,c=-1,d,mij[60];
int a[100][100];
char ans[2000][2000];
char block[6][7]={{'M','M','+','-','-','-','+'},
					{'M','/',' ',' ',' ','/','|'},
					{'+','-','-','-','+',' ','|'},
					{'|',' ',' ',' ','|',' ','+'},
					{'|',' ',' ',' ','|','/','M'},
					{'+','-','-','-','+','M','M'}}; 
void place(int aa,int b){
	for(int i=0;i<=5;i++){
		for(int j=0;j<=6;j++){
			if(block[i][j]=='M'){
				if(i<2 && j<2){
					if(a[i][j-1]>=a[i][j]){
						
					}else{
						ans[aa+i][b+j]=block[i][j];
					}
				}else{
					if(a[i][j+1]>=a[i][j]){
						
					}else{
						ans[aa+i][b+j]=block[i][j];
					}
				}
			}else{
				ans[aa+i][b+j]=block[i][j];
			}
		}
	}
	return;
}
int main(){
	//n,m是反的!!!
	//代码里是n,m
	cin>>n>>m;
	for(int i=1;i<=1900;i++){
		for(int j=1;j<=1900;j++){
			ans[i][j]='.';
		}
	}
	d=m*4+1+n*2;
	for(int i=1;i<=n;i++){
		mij[i]=-1;
		for(int j=1;j<=m;j++){
			cin>>a[i][j];
			c=max(c,a[i][j]*3+1+(n-i+1)*2);
			mij[i]=max(mij[i],a[i][j]);
		}
	}
	//cout<<"c="<<c<<" d="<<d<<endl;
	for(int i=1;i<=n;i++){
		for(int j=1;j<=m;j++){
			int stdx=c-(n-i)*2;
			int stdy=(n-i)*2;
			for(int k=1;k<=a[i][j];k++){
				x=stdx-3*k;
				y=stdy+(j-1)*4+1;
				place(x,y);
				/*
				for(int ii=3;ii<=c+2;ii++){
					for(int jj=1;jj<=d;jj++){
						cout<<ans[ii][jj];	
					}
					cout<<endl;
				}
				*/
			}
			//cout<<"i="<<i<<" j="<<j<<" a[i][j]="<<a[i][j]<<" x="<<x<<" y="<<y<<endl<<endl;
		}
	} 
	for(int i=3;i<=c+2;i++){
		for(int j=1;j<=d;j++){
			if(ans[i][j]=='M') ans[i][j]='.';
			cout<<ans[i][j];	
		}
		cout<<endl;
	}
	return 0;
	/*
2 2
1 1
2 1
	..+---+......
	./   /|-+---+
	+---+ |/   /|
	|   | +---+ |
	|   |/|   | +
	+---+ |   |/.
	|   | +---+..
	|   |/.......
	+---+....​....
	*/
}

2024/12/10 18:00
加载中...