社区讨论

救救孩子吧 必关

P1185绘制二叉树参与者 1已保存回复 0

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
0 条
当前快照
1 份
快照标识符
@mlqp0ucd
此快照首次捕获于
2026/02/17 22:23
前天
此快照最后确认于
2026/02/18 16:24
昨天
查看原帖
66pts,WA on #4#5#9 。
求调,悬关。
代码CPP
#include<bits/stdc++.h>
using namespace std;
int k[20]={0,1,2,5,11,23,47,95,191,383,767};
char s[2010],t[2010];
bool del[20][1010];
int main()
{
	int n,m,x,y,cnt;
	cin>>n>>m;
	for(int i=1;i<=m;i++)
	{
		cin>>x>>y;
		del[x][y]=1;
	}
	for(int i=1;i<=k[n];i++)cout<<" ",s[i]=' ';
	if(del[1][1])cout<<" ",s[k[n]+1]=' ';
	else cout<<"o",s[k[n]+1]='o';
	for(int i=k[n]+2;i<=k[n]*2+1;i++)cout<<" ",s[i]=' ';
	cout<<'\n';
	for(int i=2;i<=n;i++)
	{
		cnt=0;
		for(int j=1;j<=k[n]*2+1;j++)t[j]=' ';
		for(int j=1;j<=k[n]*2+1;j++)
		{
			if(s[j]=='o')
			{
				if(!del[i][++cnt])t[j-1]='/';
				if(!del[i][++cnt])t[j+1]=(char)92;
			}
		}
		swap(s,t);
		for(int j=1;j<=k[n-i+1];j++)
		{
			for(int l=1;l<=k[n]*2+1;l++)cout<<s[l];
			cout<<'\n';
			if(j==k[n-i+1])break;
			for(int l=1;l<=k[n]*2+1;l++)
			{
				if(s[l+1]=='/')t[l]='/';
				else if(s[l-1]==(char)92)t[l]=(char)92;
				else t[l]=' ';
			}
			swap(s,t);
		}
		for(int j=1;j<=k[n]*2+1;j++)
		{
			if(s[j+1]=='/'||s[j-1]==(char)92)t[j]='o';
			else t[j]=' ';
		}
		swap(s,t);
		for(int j=1;j<=k[n]*2+1;j++)cout<<s[j];
		cout<<'\n';
	}
	return 0;
}

回复

0 条回复,欢迎继续交流。

正在加载回复...