第7回ブルーブリッジカップ第3題
1292 ワード
この問題はdfs直接方式を採用し、1-9の全配列を生成し、sumが=10であるかどうかを計算する.
またc++を使用する場合は、ライブラリ関数next_を使用できます.permutation()関数;この関数ヘッダファイルincludeは、全配列関数を参照できます.
またc++を使用する場合は、ライブラリ関数next_を使用できます.permutation()関数;この関数ヘッダファイルincludeは、全配列関数を参照できます.
package com.huat.lanqiao7;
/**
*
* @author yanzz
* @ :2018 3 13
* @ :
* B DEF
*A + --- + ------- = 10
* C GHI
*
*
*
* A~I 1~9 , 。
*
* : 6+8/3+952/714 , 5+3/1+972/486 。
*
* ?
* @version:
*/
public class NO_3 {
private static int[] num = new int[10];
private static int ans = 0;
public static boolean[] visit = new boolean[10];
public static void judge() {
double sum = num[0] + (double)num[1] / num[2] + (double)(num[3]*100+num[4]*10+num[5])/(num[6]*100+num[7]*10+num[8]);
if(sum == 10)
{
ans ++;
}
}
public static void dfs(int i) {
/**
* i num 0-8
*/
if(i == 9) {
judge();
return;
} else {
for(int index = 1; index < 10; index++) {
/**
* index 1-9 ,visit 1-9
*/
if(!visit[index]) {
visit[index] = true;
num[i] = index;
dfs(i + 1);
visit[index] = false;
}
}
}
}
public static void main(String[] args) {
dfs(0);
System.out.println(ans);
}
}