1090. Highest Price in Supply Chain (25)[dfs树的遍历]
来源:互联网 发布:算法设计的要求 编辑:程序博客网 时间:2024/05/29 17:20
1. 原题: https://www.patest.cn/contests/pat-a-practise/1090
2. 思路:
题意:
给出一颗树,求出树的最大层次及同层的结点数。
思路:
显然可以用dfs,每次递归,层次加1.
也可用bfs.
为求简便,用dfs。
已AC
给出一颗树,求出树的最大层次及同层的结点数。
思路:
显然可以用dfs,每次递归,层次加1.
也可用bfs.
为求简便,用dfs。
已AC
3. 源码:
#include<iostream>#include<vector>#include<algorithm>//使用pow函数,用来求指数using namespace std;int level = 0, N;//分别为树的最大层次, 结点数int cnt = 0;//同一层次的结点数vector< vector<int> > G;//图的邻接表表示void dfs(int root, int deep);//dfs递归求最大层次int main(void){//freopen("in.txt", "r", stdin);int root;//树的根double price, rate;//分别为初始价, 加价比率scanf("%d %lf %lf", &N, &price, &rate);G.resize(N);for (int i = 0; i < N; i++)//读入数据{int parent;//父结点编号scanf("%d", &parent);if (parent == -1)//找到了根结点root = i;elseG[parent].push_back(i);//压入父结点的容器}dfs(root, 0);//递归求出层次level和个数cntdouble max_price = price * pow((1 + rate / 100), double(level));//最高价printf("%.2f %d\n", max_price, cnt);return 0;}void dfs(int root, int deep)//dfs递归求最大层次{if (G[root].empty())//表示到了叶子结点,递归结束{if (level < deep)//更新树深和个数cnt{level = deep;cnt = 1;}else if (level == deep)cnt++;return;}for (int i = 0; i < G[root].size(); i++)//递归子树dfs(G[root][i], deep + 1);return;}
0 0
- 1090. Highest Price in Supply Chain (25)[dfs树的遍历]
- PAT 1090. Highest Price in Supply Chain (25)(DFS)
- 1090. Highest Price in Supply Chain (25)<BFS,DFS>
- 1090. Highest Price in Supply Chain (25)
- 1090. Highest Price in Supply Chain (25)
- 1090. Highest Price in Supply Chain (25)
- 1090. Highest Price in Supply Chain (25)
- 1090. Highest Price in Supply Chain (25)
- 1090. Highest Price in Supply Chain (25)
- 1090. Highest Price in Supply Chain (25)
- 1090. Highest Price in Supply Chain (25)
- 1090. Highest Price in Supply Chain (25)
- 1090. Highest Price in Supply Chain (25)
- 1090. Highest Price in Supply Chain (25)
- 1090. Highest Price in Supply Chain (25)
- 1090. Highest Price in Supply Chain (25)
- 1090. Highest Price in Supply Chain (25)
- 1090. Highest Price in Supply Chain (25)
- 整合ssm框架
- unity开发者大会2017已启动 多元亮点抢先看!
- C++ 容器类(二)
- Permission denied: user=administrator, access=WRITE, inode="/":root:supergroup:drwxr-xr-x
- C++编程入门系列之目录和总结
- 1090. Highest Price in Supply Chain (25)[dfs树的遍历]
- Struts2---基础总结二
- ActiveMQ的简单使用
- eclipse 中文注释的乱码问题解决方案
- Python输入二维数组
- 伪类、伪元素的区别
- Handler is abstract, cannot be instantiated错误
- 常用测试方法
- oracle中rownum和row_number()over()的区别