• A1053 Path of Equal Weight (30 分)


    题目大概是打印符合条件的,从根 -> 叶子的路径的权值

    我的思路大概是:DFS() 从根遍历到叶子,同时记录权值

    1、因为要遍历同时记录权值,所以当前结点需要有变量能记录权值(从根到当前结点的累加权值),所以结构体看起来像这样:

    struct node_t {
        int weight;
        int total_weight;//记录遍历到当前这个结点时累加的权值
        vector<int> child;//对于一般树由于不知道孩子有多少,所以用 vector 比较节约空间
    };

    2、思路的伪码大致长这样:

    /* 伪码 */
    
    //1. 输入
    //保存树结构
    
    //2. 主逻辑
    dfs();

    //3. 输出

    对于第一部分输入——保存树结构,将树组织成二维数组较合适;

    对于第二部分 dfs() 套晴神的模板,具体地方自己改改就行,最后看起来像这样:

    /* 伪码 */
    
    void dfs(树的结点 t, 上一层累加的权值 w) {
        node_t *cur = t;
        
        //尝试当前结点
        temp.push_back(cur);
        cur->total_weight = w + cur->weight;
        if (cur->total_weight == s) {
            输出 temp;
        }
    
        //遍历当前结点的孩子(如果有的话)
        for (i 从 0 至 cur.size())    dfs(&cur->child[i], cur->total_weight);
        temp.pop_back();
    }

    上面 "尝试当前结点" 是通过临时数组实现的,也就是每枚举一个元素,我先加到数组里,如果不满足条件再从数组中移出去

    第三部分输出略

    点击获取完整代码

     
  • 相关阅读:
    Tomcat环境配置
    MySQL免安装版下载与配置
    CentOS6.5下连网以及输入法下载
    eclipse中编写运行c/c++
    eclipse中实现文本换行
    Tomcat调优及压力测试
    Tomcat调优
    Java的垃圾收集器
    GC中常见的算法
    使用VisualJVM连接远程tomcat
  • 原文地址:https://www.cnblogs.com/bEngi1/p/14423180.html
Copyright © 2020-2023  润新知