Java P1030 求先序排列

题目链接
要有数据结构基础,dfs

import java.util.*;
import java.math.*;
public class Main {
     
	public static int[] dx={
     1,1,-1,-1,0,0,1,-1};
	public static int[] dy={
     -1,1,1,-1,1,-1,0,0};
	public static int len;
	public static String zhong,hou;
    public static void main(String[] args){
     
    	Scanner sc=new Scanner(System.in);
    	zhong=sc.nextLine();
    	hou=sc.nextLine();
    	len=hou.length();
    	dfs(0,len-1,0,len-1);
    }
    public static void dfs(int zs,int ze,int hs,int he){
     
    	int m=find(hou.charAt(he));
    	System.out.print(hou.charAt(he));
    	if(m>zs)
    		dfs(zs,m-1, hs,he-ze+m-1);
    	if(m<ze)
    		dfs(m+1,ze,hs+m-zs,he-1);
    }
    public static int find(char x){
     
    	int i;
    	for(i=0;i<len;i++)
    		if(zhong.charAt(i)==x)
    			return i;
    	return -1;
    }
}

你可能感兴趣的:(洛谷,java,数据结构,dfs,算法,java)