请问为啥为这样
查看原帖
请问为啥为这样
871590
yuanbao2013楼主2023/10/12 17:20

rt,这是我写的代码:

#include<bits/stdc++.h>
using namespace std;
struct tree{
	char l,r;
}a[200];
int n;
char root;
inline void dfs(char c){
	printf("%c",c);
	if(a[c].l)
		dfs(a[c].l);
	if(a[c].r)
		dfs(a[c].r);
}
int main(){
	scanf("%d",&n);
	for(int i=1;i<=n;i++){
		char s[3];
		scanf("%s",s);
		if(i==1)
			root=s[0];
		if(s[1]!='*')
			a[s[0]].l=s[1];
		if(s[2]!='*')
			a[s[0]].r=s[2];
	}
	dfs(root);
}

然后输入的时候就出问题了,我输入样例后必须再输6行才行,然后我改了一下:

#include<bits/stdc++.h>
using namespace std;
struct tree{
	char l,r;
}a[200];
inline void dfs(char c){
	printf("%c",c);
	if(a[c].l)
		dfs(a[c].l);
	if(a[c].r)
		dfs(a[c].r);
}
int main(){
	//移动了n和root
	int n;
	char root;
	//移动了n和root
	scanf("%d",&n);
	for(int i=1;i<=n;i++){
		char s[3];
		scanf("%s",s);
		if(i==1)
			root=s[0];
		if(s[1]!='*')
			a[s[0]].l=s[1];
		if(s[2]!='*')
			a[s[0]].r=s[2];
	}
	dfs(root);
}

然后只输一个

6
abc

就没了

这是咋回事?

总结,离离原上谱(逃

2023/10/12 17:20
加载中...