洛谷链接
字符串解法,运用java可变数组
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner in=new Scanner(System.in);
int n=in.nextInt();
String s=in.next();
StringBuffer sb=new StringBuffer(s); //可变字符串
for(int i=2;i<=n;i++) { //由于第一个为原串,所以单独输入
String ss=in.next();
String ss2=ss.substring(0,1);
int x=sb.indexOf(ss2); //找到这个子树的根节点在原串中的位置
sb.deleteCharAt(x); //清除根节点
sb.insert(x, ss); //加入子树
}
for(int i=0;i<sb.length();i++) {
if(sb.charAt(i)!='*') {
System.out.print(sb.charAt(i));
}
}
}
}
深搜解法
import java.util.Scanner;
public class Main {
static char[][] a=new char[30][3];
static int n=0;
public static void dfs(char x) {
if(x!='*') {
System.out.print(x);
for(int i=0;i<n;i++) {
if(a[i][0]==x) {
dfs(a[i][1]);
dfs(a[i][2]);
}
}
}
return;
}
public static void main(String[] args) {
Scanner in=new Scanner(System.in);
n=in.nextInt();
for(int i=0;i<n;i++) {
String s=in.next();
a[i][0]=s.charAt(0);
a[i][1]=s.charAt(1);
a[i][2]=s.charAt(2);
}
dfs(a[0][0]);
}
}