首页 > 其他 > 详细

极客时间:第40章课后习题之杨辉三角

时间:2020-02-04 11:38:11      阅读:78      评论:0      收藏:0      [点我收藏+]

经过反复推理和结果确认代码应该是没问题的,有什么好的建议和思路,请大神们留言并指正。

技术分享图片
 1 #include <iostream>
 2 #include <math.h>
 3 #include <string>
 4 #include <vector>
 5 #include <map>
 6 #include<memory.h>
 7 using namespace std;
 8 
 9 //先求出最短路径长度,再算出是哪些路径
10 const int MaxLen = 15;
11 const int MaxCeng = 5;
12 int Pos2Value[MaxLen] = {5,7,8,2,3,4,4,9,6,1,2,7,9,4,5};
13 int Pos2Shot[MaxLen] = {5,7,8,2,3,4,4,9,6,1,2,7,9,4,5};
14 int Ceng2Pos[MaxCeng + 1] = {0,1,3,6,10,16};
15 
16 int FindShot()
17 {
18     //计算每个pos最短从上往下遍历
19     for (int nCurCeng = 1; nCurCeng < MaxCeng; ++nCurCeng)
20     {
21         int nLastCengFirst = Ceng2Pos[nCurCeng - 1];
22         Pos2Shot[Ceng2Pos[nCurCeng]] += Pos2Shot[nLastCengFirst];    //边缘化数据只有每行第一个和最后一个,为了提高循环效率,单独拿出来处理
23         Pos2Shot[Ceng2Pos[nCurCeng+1] - 1] += Pos2Shot[Ceng2Pos[nCurCeng] - 1];
24         for (int nLine = Ceng2Pos[nCurCeng] + 1; nLine < Ceng2Pos[nCurCeng+1] - 1; ++nLine)
25         {
26             Pos2Shot[nLine] += min(Pos2Shot[nLastCengFirst] - 1, Pos2Shot[nLastCengFirst]);
27             ++nLastCengFirst;
28         }
29     }
30     //求最后一层最短
31     int nResMin = 100000;
32     for (int i = Ceng2Pos[MaxCeng-1]; i<Ceng2Pos[MaxCeng]-1; ++i)
33     {
34         if (nResMin > Pos2Shot[i])
35         {
36             nResMin = Pos2Shot[i];
37         }
38     }
39     cout<< nResMin<<endl;
40     //如果结果正确,倒推出满足最短路径的哪些pos
41 
42     return nResMin;
43 }
44 int main()
45 {
46     FindShot();
47     return 0;
48 }
习题答案杨辉三角

 

极客时间:第40章课后习题之杨辉三角

原文:https://www.cnblogs.com/workharder/p/12258559.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!