PAT_甲级_1090 Highest Price in Supply Chain

题目大意:

给出一颗销售供应树,根结点为0,在树根处售价为P,然后从根节点开始,每一层的货物的价格就会在上一层的价格上增加r%,要求输出售价最高的零售商和其个数。

算法思路:

此题和1079是一样的题目,采用树的遍历(先序遍历或者层序遍历)获取所有节点的售价,在遍历到叶子节点的时候就更新最高售价和对应的零售商的个数。 由于给的是当前结点和其父亲的关系,所以每次输入parent的时候,就将其孩子结点添加其中node[parent].child.push_back(i),
然后对于parent==-1的情况,使用root=parent,保存根节点位置

注意点:

  • 1、尽量不要使用float保存数据。

提交结果:

PAT_甲级_1090 Highest Price in Supply Chain_第1张图片

AC代码:

#include 
#include 

using namespace std;

struct Node{
    double price;//当前结点的售价
    vector child;
}node[100005];

double highest_price = -1 ;// 最高售价
int num;// 最高售价的零售商的个数
void preTraverse(int root,double r){
    if(node[root].child.empty()){
        // 零售商,获得最高售价
        if(highest_price

你可能感兴趣的:(算法-数据结构,c++)