蓝桥杯比赛算法总结

title: 蓝桥杯比赛算法总结
date: 2015-06-18 22:35:24
categories: programming
tags: [算法]


今天突然想把我自己在蓝桥杯比赛时准备的一些算法记录下来,以便翻阅。


蓝桥杯官网

  1. 斐波那契(记忆化搜索)
int memo[MAX_N + 1];  
int fib(int n) {  
    if (n <= 1) return n;  
    if (memo[n] != 0) return memo[n];  
    else return memo[n] = fib(n-1) + fib(n-2);  
}  
  1. 全排列n个元素(非常好用)
//k:当前交换位置与其后元素交换  
public 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 i = k; i < data.length; i++) {  
        char t = data[k]; data[k] = data[i]; data[i] = t;//试探  
        f(data, k + 1);  
        char t = data[k]; data[k] = data[i]; data[i] = t;//回溯  
    }  
}  
  1. 辗转相除法求最大公约数
int gcd(int a, int b) {  
    if (b == 0) return a;  
    else return gcd(b, a % b);  
}  
  1. 埃氏筛法(搜索n以内的所有素数)
int prime[MAX_N];//第i个素数  
bool is_prime[MAX_N + 1];  

//返回n以内素数的个数  
int sieve(int n) {  
    int p = 0;
    for (int i = 0; i <= n; i++)  
        is_prime[i] = true;  
    is_prime[0] = is_prime[1] = false;  
    for (int i = 2; i <= n; i++) {  
        if (is_prime[i]){  
            prime[p++] = i;  
            for (int j = 2*i; j <= n; j += i)  
                is_prime[j] = false;  
        }  
    }  
    return p;  
}  
  1. 快速幂运算(反复平方法)
//计算:x^n % mod  
int mod_pow(int x, int n, int mod) {
    int res = 1;  
    while (n > 0) {  
        if (n & 1)  
            res = res * x % mod;  
        x = x * x % mod;  
        n >> = 1;
    }  
    return res;  
}  

我总觉得要把静态博客玩成动态博客才有意思,所以我又无耻的从Dribbble拖了张动图,哈哈o(∩_∩)o。

注:图片来自于Dribbble

————————原创文章,未经许可,请勿转载!!!————————

  • 9
    点赞
  • 102
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值