zoukankan      html  css  js  c++  java
  • 基础算法

    一、全排列

     1 //java全排列,r参数可控组合
     2 void prim(String s, LinkedList<Character> list, int r, int x){
     3     if(s.length() == r)
     4         System.out.println(s);
     5     else{
     6         int len = list.size();
     7         for(int i = x; i < len; i++){
     8             LinkedList<Character> t = new LinkedList<Character>(list);
     9             char re = t.remove(i);
    10             prim(s+re+"", t, r, i);
    11             //当x位置用0代替时,组合可重复,否则反之
    12             t = null;
    13         }
    14     }
    15 }

    二、组合 

    //从a中取k个 的 组合(标记法)
    void dfs(int[] a, int[] take, boolean[] f, int num, int k, int x){
        if(num == k){
            for(int i = 0; i < k; i++)
                System.out.print((char)(take[i]+'A'));
            System.out.print("
    ");
            return;
        }
        for(int i = x; i < a.length; i++){
            if(!f[i]){
                f[i] = true;
                take[num] = a[i];
                dfs(a, take, f, num+1, k, i);
                //当i位置用0代替时,组合可重复,否则反之
                f[i] = false;
            }
        }
    }

    三、快速排序

     1 void Qsort(int list[], int left, int right)
     2 {
     3     if(left < right)
     4     {
     5         int t = list[l];
     6         int i = left, j = right;
     7         while(i != j)
     8         {
     9             while(i<j && list[j]>=t)
    10                 j--;
    11             Swap(list[i], list[j]);    //交换两数
    12             while(i<j && list[i]<=t)
    13                 i++;
    14             Swap(list[i], list[j]);
    15         }
    16         Qsort(list, left, i);
    17         Qsort(list, i+1, right);
    18     }
    19     else
    20         return ;
    21 }

    四、最大公约数和最小公倍数  

     1 int gcd(int a, int b)///辗转相除法
     2 {
     3     int mod=a % b;
     4     while (mod!=0)
     5     {
     6         a = b;
     7         b = mod;
     8         mod = a % b;
     9     }
    10     return b;
    11 }
    12 int gcd(int a, int b)//更相减损法
    13 {
    14     int i = a, j = b;    
    15     while(i != j)
    16     {
    17         if(i > j)
    18             i -= j;
    19         else
    20             j -= i;
    21     }
    22     return i;   
    23 }
    24 公倍数 :a*b/gcd(a, b);
  • 相关阅读:
    锚点anchorPoint
    核心动画2
    核心动画1
    CALayer()CoreAnimation 核心动画 简称 CA
    storyBoard
    本地通知UILocalNotification
    CoreImage 可以用滤镜来处理图片,比如修改饱和度,亮度,对比度等
    GCD(2)
    NSOperation(多线程)2
    给你个图片的网络地址url,如何获取该图片的尺寸
  • 原文地址:https://www.cnblogs.com/AardWolf/p/10333782.html
Copyright © 2011-2022 走看看