社区讨论
救救孩子吧 必关
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 条回复,欢迎继续交流。
正在加载回复...