zoukankan      html  css  js  c++  java
  • 7对数字


    今有7对数字:两个1,两个2,两个3,...两个7,把它们排成一行。
    要求,两个1间有1个其它数字,两个2间有2个其它数字,以此类推,两个7之间有7个其它数字。如下就是一个符合要求的排列:

    17126425374635

    当然,如果把它倒过来,也是符合要求的。

    请你找出另一种符合要求的排列法,并且这个排列法是以74开头的。

    注意:只填写这个14位的整数,不能填写任何多余的内容,比如说明注释等。

    public class Main {
        public static void main(String[] args) {
            f("74112243735566".toCharArray(), 0);  //这边整理一下填入的数据其实就是一步剪枝
        }
        private static void f(char[] arr, int step) {
            if(step == arr.length - 1) {
                if(arr[0] == '7' && arr[1] == '4' && arr[8] == '7' && arr[6] == '4' && g(String.valueOf(arr))) {
                    System.out.println(String.valueOf(arr));  //我们只需要答案就够了,所以不用优化
                }                                              //g方法判断放前面还是放后面也有讲究
                return;
            }
            for(int i = step; i < arr.length; i ++) {
                char t = arr[step];
                arr[step] = arr[i];
                arr[i] = t;
                
                f(arr, step + 1);
                
                t = arr[step];
                arr[step] = arr[i];
                arr[i] = t;
            }
        }
        private static boolean g(String s) {
            for(int i = 1; i <= 7; i ++) {
                if(s.lastIndexOf(i + 48) - s.indexOf(i + 48) - 1 != i) {  //里面是ASCII码
                    return false;
                }
            }
            return true;
        }
    }
  • 相关阅读:
    牛人一个
    hdu 1106 排序
    中国历史上著名的年号
    十万个为什么 —— 名词解释(历史)
    十万个为什么 —— 名词解释(历史)
    数学可视化
    数学可视化
    高观点下的初等数学
    高观点下的初等数学
    同一性(identical)
  • 原文地址:https://www.cnblogs.com/jizhidexiaobai/p/8570687.html
Copyright © 2011-2022 走看看