• 1053 Path of Equal Weight


    Sample Input:
    20 9 24
    10 2 4 3 5 10 2 18 9 7 2 2 1 3 12 1 8 6 2 2
    00 4 01 02 03 04
    02 1 05
    04 2 06 07
    03 3 11 12 13
    06 1 09
    07 2 08 10
    16 1 15
    13 3 14 16 17
    17 2 18 19



    Sample Output:
    10 5 2 7
    10 4 10
    10 3 3 6 2
    10 3 3 6 2

    给出该树,要求输出符合条件的路径。

      这个题目在键树时可以用静态数组来写,运用dfs函数来写,比较简单。

    #include <iostream>
    #include<algorithm>
    #include<vector>
    using namespace std;
    const int Max = 110;
    struct Node {
        int wegiht;
        vector<int>child;
    }node[Max];//静态树
    bool cmp(int a, int b) {
        return node[a].wegiht>node[b].wegiht;
    }//按节点的权重,从大到小排列
    int n, m, s, path[Max];
    void dfs(int index, int numnode, int sum) {
        if (sum > s)return;
        if (sum == s) {
            if (!node[index].child.empty())return;
            for (int i = 0; i < numnode; i++) {//如果该结点为叶节点,则输出路径
                if (i != 0)cout << " ";
                cout << node[path[i]].wegiht;
                if (i == numnode - 1)cout << endl;
            }
        }
        for (int i = 0; i < node[index].child.size(); i++) {
            int child = node[index].child[i];
            path[numnode] = child;//path这个数组是从0开始的
            dfs(child, numnode + 1, sum + node[child].wegiht);//进入递归
        }
    }
    int main() {
        cin >> n >> m >> s;//n个结点和m个非叶结点。
        for (int i = 0; i < n; i++) {
            cin>> node[i].wegiht;
        }
        int id, k;
        for (int i = 0; i < m; i++) {
            cin >> id >> k;
            for (int j = 0; j < k; j++) {
                int temp;
                cin >> temp;
                node[id].child.push_back(temp);
            }
            sort(node[id].child.begin(), node[id].child.end(), cmp);//按节点权重由大到小排序。
        }
        path[0] = 0;
        dfs(0, 1, node[0].wegiht);
        return 0;
    }
  • 相关阅读:
    js中两个==和三个===的区别
    软件需求工程解析
    《我们应当怎样做需求分析》阅读笔记
    需求工程阅读笔记03
    个人小软件冲刺05
    个人小软件冲刺04
    需求工程阅读笔记02
    个人小软件冲刺03
    个人小软件冲刺02
    个人小软件冲刺01
  • 原文地址:https://www.cnblogs.com/kalicener/p/12548170.html
Copyright © 2020-2023  润新知