2017蓝桥杯省赛---java---A---2(9数算式)
生活随笔
收集整理的這篇文章主要介紹了
2017蓝桥杯省赛---java---A---2(9数算式)
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
題目描述
思路分析
全排列+check
代碼實現(xiàn)
package TEST;import java.util.HashSet; import java.util.Set;class Main{static int[] a = { 1, 2, 3, 4, 5, 6, 7, 8, 9 };static int ans;public static void main(String[] args) {f(0);System.out.println(ans / 2);}// 全排列private static void f(int k) {// 全排列終點if (k == a.length) {// 處理該種排列下所有的乘法可能for (int i = 1; i < a.length; i++) {int x1 = a2i(0, i);int x2 = a2i(i, 9);// 如果乘積也包含了九個數(shù)字,ans++if (check(x1 * x2)) {ans++; // 這里沒有考慮x1和x2交換順序的情況,所以最后輸出時要除以2}}}// 全排列for (int i = k; i < a.length; i++) {int t = a[i];a[i] = a[k];a[k] = t;f(k + 1);t = a[i];a[i] = a[k];a[k] = t;}}// 判斷x是否是一個包含九個數(shù)字的數(shù)private static boolean check(int x) {String s = x + "";if (s.length() != 9 || s.indexOf('0') > -1) {return false;}Set<Character> set = new HashSet<Character>();for (int i = 0; i < s.length(); i++) {set.add(s.charAt(i));}if (set.size() == 9) {return true;}return false;}// 將a數(shù)組[begin,end)轉換為整數(shù)private static int a2i(int begin, int end) {int res = a[begin];for (int i = begin + 1; i < end; i++) {res *= 10;res += a[i];}return res;}}答案
1652
總結
以上是生活随笔為你收集整理的2017蓝桥杯省赛---java---A---2(9数算式)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 电脑关不了机了自动重启 Win10系统关
- 下一篇: 伊对账号注销教程(伊对账号怎样注销)