⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 compromise.java

📁 PKU中一些数据结构基本算法题的java实现
💻 JAVA
字号:
package PKU.DP;
import java.util.*;

/**
 * 
 */

/**
 * ID:2250
 * DP
 * @author yhm
 *
 */
public class Compromise {
	static String[] text1;
	static String[] text2;
	static StringBuffer buffer;
	static int[][] length;
	static int[][] mark;

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		Scanner cin = new Scanner(System.in);
		while(cin.hasNext()){
			ArrayList<String> list1 = new ArrayList<String>();
			while(cin.hasNext()){
				String str = cin.next();
				if(str.equals("#")){
					break;
				}
				list1.add(str);
			}
			ArrayList<String> list2 = new ArrayList<String>();
			while(cin.hasNext()){
				String str = cin.next();
				if(str.equals("#")){
					break;
				}
				list2.add(str);
			}
			
			text1 = list1.toArray(new String[0]);
			text2 = list2.toArray(new String[0]);
			solve();
			
		}
		

	}
	
	
	static void solve(){
		int len1 = text1.length;
		int len2 = text2.length;
		length = new int[len1+1][len2+1];
		mark = new int[len1+1][len2+1];
		
		for(int i=1;i<=len1;i++){
			for(int j=1;j<=len2;j++){
				if(text1[i-1].equals(text2[j-1])){
					length[i][j] = length[i-1][j-1]+1;
					mark[i][j] = 1;
				}
				else{
					if(length[i-1][j]>length[i][j-1]){
						length[i][j] = length[i-1][j];
						mark[i][j] = 2;
					}
					else{
						length[i][j] = length[i][j-1];
						mark[i][j] = 3;
					}
				}
			}
		}
		
		buffer = new StringBuffer();
		print(len1,len2);
		System.out.println(buffer);
		
	}
	

	static void print(int i, int j){
		if(i==0 || j==0){
			return;
		}
		if(mark[i][j]==1){
			print(i-1,j-1);
			buffer.append(text1[i-1]+" ");
		}
		else if(mark[i][j]==2){
			print(i-1,j);
		}
		else{
			print(i,j-1);
		}
	}
	

}


⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -