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
就没了
这是咋回事?
总结,离离原上谱(逃