zoukankan      html  css  js  c++  java
  • 【算法学习笔记】64. 枚举法 SJTU OJ 1381 畅畅的牙签

    枚举法就好了,推理很麻烦,感觉也做不出来。

    创造一个结构体,一个是真实的数,一个是花费的牙签数。

    构建一位数,两位数,三位数即可。

    #include <iostream>
    #include <vector>
    using namespace std;
    //从0到9耗费的牙签数
    int cost[10]={6,2,5,5,4,5,6,3,7,6};
    struct num
    {    
        int n;//用于计算的数
        int c;//耗费的牙签
    };
    
    num v[100000];
    int main(int argc, char const *argv[])
    {
        
        int v_size = 0;
        //一位数
        for (int i = 0; i <= 9; ++i)
        {
            num t;
            t.n = i;
            t.c = cost[i];
            v[t.n] = t;
        }
        //两位数
        for (int i = 1; i <=9; ++i)
        {
            for (int j = 0; j <= 9; ++j)
            {
                num t;
                t.n = i*10 + j;
                t.c = v[i].c + v[j].c;
                v[t.n] = t;
            }
        }
        //三位数
        for (int i = 1; i <=9; ++i)
        {
            for (int j = 0; j <= 9; ++j)
            {
                for(int k=0; k <= 9; ++k){
                    num t;
                    t.n = i*100 + j*10 + k;
                    t.c = v[i].c + v[j].c + v[k].c;
                    v[t.n] = t;
                }
            }
        }
    
        int total  = 0; //一共的答案数
        cin>>total;
        int ans =  0;
        //枚举A - B 计算C 和 cost
        for (int i = 999; i >=0; --i)
        {
            for (int j = 0; j <= i; ++j)
            {
                int k =  v[i].n - v[j].n;
                int cost = 3 + v[i].c + v[j].c + v[k].c;
                if(cost == total){
                    //cout<<i<<"-"<<j<<"="<<k<<endl;
                    ans++;
                }
            }
        }
        cout<<ans<<endl;
    
        return 0;
    }
  • 相关阅读:
    laravel打印SQL语句
    php扩展打开不起作用的原因, php数字显示2147483647的原因
    opacity与rgba
    package.json中devDependencies与dependencies的区别
    FileReader读取文件
    Vue双向绑定原理详解
    Vue2入门路线及资源
    gulp入门实践
    浏览器版本识别
    this用法
  • 原文地址:https://www.cnblogs.com/yuchenlin/p/sjtu_oj_1381.html
Copyright © 2011-2022 走看看