• 小猴编程算法二阶段-上课笔记


    第三讲

    重点题:

    1、123好数

    a[i]里存的是数字的第i位是1, 2还是3

    t存的是每个数的第p位和第p-1位都是什么数字(当做两位数来判断)

    如果是12,23或者31,说明不能不是123好数

    void search(int p){//枚举a[i] 
        if(p > n){
            cnt++;
            if(cnt == k){
                for(int i = 1;i <= n;i++){
                    cout << a[i];
                }
                cout << endl;
            }
            return;
        }
        for(a[p] = 1;a[p] < 4;a[p]++){
            int t = a[p-1]*10 + a[p];
            if(t == 12 || t == 23 || t == 31){
                continue;
            }
            search(p+1);
        }
    }

    2、d好数

    前一个数和后一个数的绝对值不能超过d才能称为d好数

    void search(int p){//枚举a[i] 
        if(p > n){
            cnt++;
            return;
        }
        for(int i = 1;i <= m;i++){
            int t = a[p] - a[p-1];
            if(abs(t) > d && p != 1){
                continue;
            }
            search(p+1);
        }
    }

    3、组合枚举

    给出1~n,n个数中选出m个数

    例如:

    1  2

    1  3

    1  4

    2  3

    2  4

    3  4

    a[i]存的是每个数

    如果已经递归到n了,输出

    如果还没到n,也还没选m个数呢,我可以选一个数(从x开始),继续递归,我已经选的数+1,我选到几了+1

    void pick(int x,int y){
        if(y == n){
            for(int i = 0;i < n;i++){
                cout << a[i] << ' ';
            }
            cout << endl;
            return;
        }
        for(int i = x;i <= m;i++){
            a[y] = i;
            pick(i+1,y+1);
        }
    }
  • 相关阅读:
    java日期格式转换工具类
    关于IOS给我的启发
    (转载)小米手机给我的启发和思考
    ElasticDownload
    ShopMall
    CycleViewPager
    MaterialImageView
    ZrcListView
    superCleanMaster
    QuickNewsLibs
  • 原文地址:https://www.cnblogs.com/elisa02/p/13295254.html
Copyright © 2020-2023  润新知