日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

PAT甲级 -- 1053 Path of Equal Weight (30 分)

發布時間:2024/2/28 编程问答 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 PAT甲级 -- 1053 Path of Equal Weight (30 分) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Given a non-empty tree with root?R, and with weight?W?i???assigned to each tree node?T?i??. The?weight of a path from?R?to?L?is defined to be the sum of the weights of all the nodes along the path from?R?to any leaf node?L.

Now given any weighted tree, you are supposed to find all the paths with their weights equal to a given number. For example, let's consider the tree showed in the following figure: for each node, the upper number is the node ID which is a two-digit number, and the lower number is the weight of that node. Suppose that the given number is 24, then there exists 4 different paths which have the same given weight: {10 5 2 7}, {10 4 10}, {10 3 3 6 2} and {10 3 3 6 2}, which correspond to the red edges in the figure.

Input Specification:

Each input file contains one test case. Each case starts with a line containing?0<N≤100, the number of nodes in a tree,?M?(<N), the number of non-leaf nodes, and?0<S<2?30??, the given weight number. The next line contains?N?positive numbers where?W?i???(<1000) corresponds to the tree node?T?i??. Then?M?lines follow, each in the format:

ID K ID[1] ID[2] ... ID[K]

where?ID?is a two-digit number representing a given non-leaf node,?K?is the number of its children, followed by a sequence of two-digit?ID's of its children. For the sake of simplicity, let us fix the root ID to be?00.

Output Specification:

For each test case, print all the paths with weight S in?non-increasing?order. Each path occupies a line with printed weights from the root to the leaf in order. All the numbers must be separated by a space with no extra space at the end of the line.

Note: sequence?{A?1??,A?2??,?,A?n??}?is said to be?greater than?sequence?{B?1??,B?2??,?,B?m??}?if there exists?1≤k<min{n,m}?such that?A?i??=B?i???for?i=1,?,k, and?A?k+1??>B?k+1??.

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

Special thanks to Zhang Yuan and Yang Han for their contribution to the judge's data.

我的思路:

1. 建立結構體,存儲權值,還有孩子。

2. 進行dfs,中間要加入權重值和的計算判斷。?

3. 進行代碼實現的時候,dfs又把自己繞暈進去...我好想哭啊,遞歸怎么這么難寫...下午按照柳神的思路再寫一遍把!

?

柳神:

1. 在錄入樹的結點的時候就進行排序,以便深搜的時候直接從大到小輸出。第一次見到這種cmp函數的書寫方式誒,感覺學到了!!

2. 還有就是控制輸出那個地方,也很新奇,值得學習!

3.?path數組,傳入一個nodeNum記錄對當前路徑來說這是第幾個結點(這樣直接在path[nodeNum]里面存儲當前結點的孩子結點的序號,這樣可以保證在先判斷return的時候,path是從0~numNum-1的值確實是要求的路徑結點)。然后每次要遍歷下一個孩子結點的之前,令path[nodeNum] = 孩子結點的序號,這樣就保證了在return的時候當前path里面從0~nodeNum-1的值就是要輸出的路徑的結點序號,輸出這個序號的權值即可,直接在return語句里面輸出。

#include <iostream> #include <vector> #include <algorithm> using namespace std; int target; struct NODE {int w;vector<int> child; }; vector<NODE> v; vector<int> path; void dfs(int index, int nodeNum, int sum) {if(sum > target) return ;if(sum == target) {if(v[index].child.size() != 0) return; //沒有到葉子結點,返回for(int i = 0; i < nodeNum; i++) //到了葉子結點并且權值一樣,進行輸出printf("%d%c", v[path[i]].w, i != nodeNum - 1 ? ' ' : '\n');return ;}for(int i = 0; i < v[index].child.size(); i++) { //遞歸訪問孩子結點int node = v[index].child[i];path[nodeNum] = node;dfs(node, nodeNum + 1, sum + v[node].w);}} int cmp1(int a, int b) {return v[a].w > v[b].w; } int main() {int n, m, node, k;scanf("%d %d %d", &n, &m, &target);v.resize(n), path.resize(n);for(int i = 0; i < n; i++)scanf("%d", &v[i].w);for(int i = 0; i < m; i++) {scanf("%d %d", &node, &k);v[node].child.resize(k);for(int j = 0; j < k; j++)scanf("%d", &v[node].child[j]);sort(v[node].child.begin(), v[node].child.end(), cmp1);}dfs(0, 1, v[0].w);return 0; }

?

總結

以上是生活随笔為你收集整理的PAT甲级 -- 1053 Path of Equal Weight (30 分)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 美女黄色片网站 | 欧美成人免费一级 | 欧美在线播放 | 国 产 黄 色 大 片 | 精品乱码一区内射人妻无码 | 奇米色综合 | 亚洲毛片网| 久久久久久久久久久91 | 欧美性猛交xxxx免费看 | 久久久无码人妻精品一区 | 日日夜夜免费视频 | 超碰在线网 | 欧美日韩国产片 | 国产黄色特级片 | 欧美日韩91 | 蜜桃视频欧美 | 国产农村妇女毛片精品 | 日韩不卡一区二区三区 | 久久国产麻豆 | 国产欧美视频一区二区三区 | av无线看 | av资源在线 | 午夜久久网 | 欧美一区久久 | 亚洲免费国产 | 中文亚洲av片不卡在线观看 | av免费的| 国产乱色精品成人免费视频 | 日韩av不卡电影 | 欧美日韩国产亚洲沙发 | 18无码粉嫩小泬无套在线观看 | 8x8x成人 | 久久免费网 | 亚洲成人a v | 男人天堂一区二区 | 成人视频在线观看 | www.超碰在线观看 | 深夜在线网站 | 日韩av成人在线 | 妹子干综合 | 一区二区三区四区在线播放 | 国产福利不卡 | 3d动漫精品啪啪一区二区下载 | 久久久国产精品成人免费 | 亚洲高清视频在线播放 | 亚洲精品www久久久久久 | 国产欧美久久一区二区三区 | 日韩免费一二三区 | 日韩av有码 | 欧美日韩成人在线 | sesese99| 国产山村乱淫老妇女视频 | 调教驯服丰满美艳麻麻在线视频 | 成年人视频在线观看免费 | 亚洲视频自拍 | 少妇被爽到高潮动态图 | 成人性爱视频在线观看 | 恶虐女帝安卓汉化版最新版本 | 亚洲一区二区麻豆 | 亚洲性xxxx| 午夜网页| 男人的天堂网av | 亚洲网站免费 | 一级a性色生活片久久毛片 爱爱高潮视频 | 一级全黄裸体免费观看视频 | 全黄一级裸片视频 | 婷婷影视| 米奇7777狠狠狠狠视频 | 欧美色图另类 | 亚洲精品免费电影 | 7777在线视频 | 爱搞国产 | 日本三级小视频 | 国产99精品| 国产乱妇乱子 | 7777精品久久久久久 | 91青青青| 99视频在线精品免费观看2 | 国产精品午夜福利 | 福利在线视频观看 | 91精品久久香蕉国产线看观看 | 成人18在线| 狠狠躁日日躁夜夜躁av | av不卡免费在线 | 欧美精品国产一区二区 | 午夜剧场欧美 | 黄色91 | 波多野结衣免费看 | 亚洲无码国产精品 | 免费a视频| 国产无遮挡aaa片爽爽 | 99re这里| 日韩无套无码精品 | 欧美一级在线视频 | 亚洲综合在线中文字幕 | www.xxx.国产 | 午夜久久网站 | 欧美日韩一区二区三区在线视频 | 色综合久久精品亚洲国产 |