A1079 Total Sales of Supply Chain (25分)
Posted tsruixi
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了A1079 Total Sales of Supply Chain (25分)相关的知识,希望对你有一定的参考价值。
一、技术总结
- 开始拿到这一题,知道用DFS但是不知道怎么设置递归式和递归边界,一直在想,其实就是该节点的子结点为0时就是终止时,递归式就是每次递归后,对于深度depth加一。
- 还有一点就是怎么解决所有费用相加的问题,开始还在想,用一个数组存储所有路径然后再,在遍历,是在太笨了,可以直接定义一个全局变量sum,然后出现递归边界时,就加上这个路径下产生的总费用。
- 还有就是要注意题中给出的输出格式,还有就是英文中数字1和字母l过于相似,切记可能出现错误。
- 同时如果定义为double,用%d输入可能出现不知名的错误,即类型与输入格式不匹配的问题。
二、参考代码
#include<bits/stdc++.h>
using namespace std;
const int maxn = 100010;
struct node{
double data;
vector<int> child;
}Node[maxn];
int n;
double p, r, sum = 0;//用于记录总费用
void DFS(int index, int depth){
if(Node[index].child.size() == 0){
sum += Node[index].data * pow(1+r, depth);
return;
}
for(int i = 0; i < Node[index].child.size(); i++){
DFS(Node[index].child[i], depth+1);
}
}
int main(){
scanf("%d%lf%lf", &n, &p, &r);
r /= 100;
int num, id;//num用于记录每一个结点的子结点数量, id子结点编号
for(int i = 0; i < n; i++){
scanf("%d", &num);
if(num == 0){
scanf("%lf", &Node[i].data);
}else{
for(int j = 0; j < num; j++){
scanf("%d", &id);
Node[i].child.push_back(id);
}
}
}
DFS(0, 0);
printf("%.1f
", p*sum);
return 0;
}
以上是关于A1079 Total Sales of Supply Chain (25分)的主要内容,如果未能解决你的问题,请参考以下文章
1079 total sales of supply chain
1079 Total Sales of Supply Chain (25)
1079. Total Sales of Supply Chain (25)
1079 Total Sales of Supply Chain (25 分)