zoukankan      html  css  js  c++  java
  • 蓝桥杯-递归常用的几种套路

    求最大公共子序列的大小

    public class 最大公共子序列 {
        public static void main(String[] args) {
            int k=f("abc","adfefexcgfd");
            System.out.println(k);
        }
    
        private static int f(String s1, String s2) {
            
            if(s1.length()==0||s2.length()==0) return 0;
            
            if(s1.charAt(0)==s2.charAt(0))
                return f(s1.substring(1),s2.substring(1))+1;
            else
                return Math.max(f(s1.substring(1),s2),f(s1,s2.substring(1)));
        }
    }

    字母数组或数字的全排列

    /*
    A B C 
    A C B 
    B A C 
    B C A 
    C B A 
    C A B 
     */
    public class 全排列 {
        public static void main(String[] args) {
            
            char[] data="123456789".toCharArray();
            f(data,0);
        }
    
        private static void f(char[] data, int k) {
            
            if (k==data.length) {
                for (int i = 0; i < data.length; i++) {
                    System.out.print(data[i]+" ");
                }
                System.out.println();
            }
            
            for (int j = k; j < data.length; j++) {
                { char t=data[k];data[k]=data[j];data[j]=t; }//试探
                f(data,k+1);//递归
                { char t=data[k];data[k]=data[j];data[j]=t; }//回溯
            }
        }
    }

    超大的数字和小数的四舍五入(e,zheigehediguimeiguanxi)

    import java.math.BigDecimal;
    import java.math.BigInteger;
    
    public class 大数和分数 {
        public static void main(String[] args) {
            
            //大的数
            BigInteger bi=BigInteger.valueOf(1);
            BigInteger sum=BigInteger.valueOf(0);
            for (int i = 0; i < 64; i++) {
                sum=sum.add(bi);
                bi=bi.multiply(BigInteger.valueOf(2));
            }
            System.out.println(sum);
            
            //小数的四舍五入
            double d=1234.546556;
            BigDecimal bd=new BigDecimal(d);
            double d1=bd.setScale(2,BigDecimal.ROUND_HALF_UP).doubleValue();
            System.out.println(d1);
        }
    }
  • 相关阅读:
    对协程的一些理解
    JUC中Lock和ReentrantLock介绍及源码解析
    JUC中AQS简介
    Executor框架简介
    CyclicBarrier简介
    CountDownLatch简介
    Semaphore简介
    ThreadPoolExecutor简介
    AtomicInteger简介
    synchronized和volatile简介
  • 原文地址:https://www.cnblogs.com/gx-143/p/6159424.html
Copyright © 2011-2022 走看看