【每周算法系列】No.1 [2019/12/1—2019/12/5]

每周算法系列 NO.1

目录

每周算法系列

2019/12/1    题型:数组

2019/12/2    题型:贪心算法

2019/12/3    题型:数组

2019/12/4    题型:数组

2019/12/5    题型:循环


2019/12/1    题型:数组

【题目描述】

       【每周算法系列】No.1 [2019/12/1—2019/12/5]

【参考答案】

       【每周算法系列】No.1 [2019/12/1—2019/12/5]

【自我分析】

       【每周算法系列】No.1 [2019/12/1—2019/12/5]

2019/12/2    题型:贪心算法

【题目描述】

       【每周算法系列】No.1 [2019/12/1—2019/12/5]

【参考答案】

       【每周算法系列】No.1 [2019/12/1—2019/12/5]

【自我分析】

(1)total记录全程加油量和耗油量之差的总和。

若为非负,则表示从某一点起始可以走完全程(一圈);否则,表示不可走完全程(一圈)。

(2)remain记录第i加油站与(i+1)加油站之间加油量和油耗量之差。

为全部加油站的某一站,若为负数,表示从第i加油站无法到达(i+1)加油站,则起始点,肯定不为i,

将起始点尝试从i+1开始,即position=i+1;再将remain重新置零用以判断从i+1站是否可以达到i+2站。

通过for循环控制站点的移动。

(3)当通过for循环遍历所有站点时,若total<0说明,总的加油量<总的耗油量,

可以得出,不存在从某个站点出发,可以走完全程。

若total>0且position记录着第一个加油量>耗油量的站点的下标,即为起始站点。

【奇思妙想】

       【每周算法系列】No.1 [2019/12/1—2019/12/5]

2019/12/3    题型:数组

【题目描述】

       【每周算法系列】No.1 [2019/12/1—2019/12/5]

【参考答案】

       【每周算法系列】No.1 [2019/12/1—2019/12/5]

【自我分析】

       【每周算法系列】No.1 [2019/12/1—2019/12/5]

 

【每周算法系列】No.1 [2019/12/1—2019/12/5]

(1)领导—组员关系如上图,在数组中的体现leadernum[i]=ai,则,ai为i的领导。

即数组中存放的值,为数组下标的领导,例如,leadernum[1]=0说明一号员工不存在领导,自己可能就是领导,

再如leadernum[2]=1,说明一号员工为二号员工的领导。

(2)新建一个同等大小的数组membernum[],用于存放每个小组的员工数。

(3)由上可知,若leadernum[i]非0,这说明该员工存在领导

【每周算法系列】No.1 [2019/12/1—2019/12/5]

(4)将leadernum[i]作为数组下标值,寻找其领导,并在其对应的小组中+1,实现对小组员工数的统计。

又有3->2->1可知,一个份组的领导也是更大一级分组的员工,例如,2是3的领导,却是1的员工。

如何逐一的找出各级领导,并统计小组员工数便是关键,当数组元素值为0时结束(该员工不存领导,如1)。

(5)如何逐级求出领导,在于将当前数组元素值,作为该数组的下标,通过此下标,寻找其领导,例如leadernum[3]=2,则leadernum[2]=1,又有leadernum[1]=0结束,在程序中通过k实现。在此过程中还需完成对该小组员工数的+1。

【每周算法系列】No.1 [2019/12/1—2019/12/5]

2019/12/4    题型:数组

【题目描述】

       【每周算法系列】No.1 [2019/12/1—2019/12/5]

【参考答案】

       【每周算法系列】No.1 [2019/12/1—2019/12/5]

        【每周算法系列】No.1 [2019/12/1—2019/12/5]

 

 

2019/12/5    题型:循环

【题目描述】

       【每周算法系列】No.1 [2019/12/1—2019/12/5]

【自我分析】

       【每周算法系列】No.1 [2019/12/1—2019/12/5]