式のアルゴリズムを改善するためのJAVAカップブルーブリッジ構成
資源制約の
制限時間:256.0メガバイト:メモリ制限を1.0秒
問題の説明
が= 39 X 186 7254として表現することができるように7254は、式1~9、異常な数であり、各数値は一度だけ表示され
、すべてのそのような異なった式の出力(乗算器は、同一の交換であると考えられます式)
小出力の結果、同じ結果、小さい第1の小乗算器出力。
出力フォーマット
出力の各行式、等号ブランク式、(文字xの代わりに)乗算記号と末尾のスペース前後の
小さい乗算編集
サンプル出力
式に問題が結果行に表示されます次のように:
= 39 X 186 7254を
import java.util.ArrayList;
import java.util.Collections;
import java.util.Scanner;
public class Main {
static int[] a=new int[9];
static ArrayList<String> set=new ArrayList<String>();
public static void main(String[] args) {
Scanner sca=new Scanner(System.in);
dfs(0);
Collections.sort(set);
for(String s:set) {
System.out.println(s);
}
}
public static void dfs(int k) {
//System.out.println(a);
if(k==9) {
int sum1=a[0]*1000+a[1]*100+a[2]*10+a[3];
int sum2=a[4]*10+a[5];
int sum3=a[6]*100+a[7]*10+a[8];
if(sum1==sum2*sum3) {
String temp=sum1+" = "+sum2+" x "+sum3;
set.add(temp);
}
int sum4=a[4];
int sum5=a[5]*1000+a[6]*100+a[7]*10+a[8];
if(sum1==sum4*sum5) {
String temp=sum1+" = "+sum4+" x "+sum5;
set.add(temp);
}
return;
}
for(int i=0;i<9;i++) {
if(a[i]==0) {
a[i]=k+1;
dfs(k+1);
a[i]=0;
}
}
}
}