ブルーブリッジカップの2つの2桁の乗算は1つの2桁の乗算に1つの3桁の乗算に等しい


次の式を見てください.
□□ x □□ = □□ x □□□
2つの2桁の乗算は、1つの2桁に1つの3桁の乗算に等しいことを示します.限定条件がなければ、このような例が多い.
しかし、現在の限定は、この9つのブロックは、1~9の9つの数字を表し、0を含まない.この式の1から9の数字は1回しか現れません!例:
46 x 79 = 23 x 158 54 x 69 = 27 x 138 54 x 93 = 27 x 186 .....
プログラミングして、可能な限りの状況を出力してください.注意:
左の2つの乗数交換は同じスキームで、繰り返し出力しないでください.異なるシナリオの出力順序は重要ではありません
import java.util.*;

public class Main{
	private static List<Vector<Character>> filter;
	private static void fullPremutation(Vector<Character> source,Vector<Character> result){
		if(source.size()==0&&isfilter(result)){
			boolean exit=false;
			int a=(result.elementAt(0)-'0')*10+(result.elementAt(1)-'0');
			int b=(result.elementAt(2)-'0')*10+(result.elementAt(3)-'0');
			for(int i=0;i<filter.size();i++){
				int fa=(filter.get(i).elementAt(0)-'0')*10+(filter.get(i).elementAt(1)-'0');
				int fb=(filter.get(i).elementAt(2)-'0')*10+(filter.get(i).elementAt(3)-'0');
				
				if(a==fb&&b==fa){
					exit=true;
					break;
				}
			}
			if(exit==false){
				filter.add(new Vector<Character>(result));
			}
			
		}
		
		// source    1-9     
		for(int i=0;i<source.size();i++){
			result.add(source.elementAt(i));
			source.remove(i);
			fullPremutation(source,result);
			source.add(i,(char)result.elementAt(result.size()-1));
			result.remove(result.size()-1);
		}
	}
	
	//             a*b=c*d   
	private static boolean isfilter(Vector<Character> result){
		int a=(result.elementAt(0)-'0')*10+(result.elementAt(1)-'0');
		int b=(result.elementAt(2)-'0')*10+(result.elementAt(3)-'0');
		int c=(result.elementAt(4)-'0')*10+(result.elementAt(5)-'0');
		int d=(result.elementAt(6)-'0')*100+(result.elementAt(7)-'0')*10+(result.elementAt(8)-'0');
		
		if(a*b==c*d) return true;
		return false;
	}
	
	//      
	private static void print(Vector<Character> vector) {
		System.out.printf("%c%cx%c%c=%c%cx%c%c%c", vector.elementAt(0),
				vector.elementAt(1),vector.elementAt(2),vector.elementAt(3),
				vector.elementAt(4),vector.elementAt(5),vector.elementAt(6),
				vector.elementAt(7),vector.elementAt(8));
		
	}
	
	public static void main(String[] args){
		Vector<Character> source=new Vector<Character>();
		Vector<Character> result=new Vector<Character>();
		
		filter=new ArrayList<Vector<Character>>();
		
		for(int i=1;i<=9;i++){
			source.add((char) ('0'+i));
		}
		
		fullPremutation(source,result);
		for(int i=0;i<filter.size();i++){
			print(filter.get(i));
			System.out.println();
		}
	}

	
}