很早就有去做的想法,可是一直不動手
今天花了点時间搞搞
結果は以下の通り:
核心部分
代
1 パブリック List<Result> GetResults(int[] arr)
2 {
3 //输入有效性检测
4 if (arr.Length==0)
5 新しい NotEnoughInputException() をスローします。
6
7 List<結果> rlist = new List<結果>();
8
9 //实际运算
10
11 //開始位置を初期化し、最初の点をその後の結果の開始点に適用します
12 位置 startP = 新しい位置(Position.EmptyPosition, arr[0]);
13
14 //当前点当作是最大結果值
15 結果 curResult = new Result(Position.EmptyPosition, startP);
16
17 //方向結果列表追加内容
18 rlist.Add(curResult);
19
20 //1 つ以上のデータがある
21 if (arr.Length > 1)
22 {
23 位置 curP,nextP;
24 curP=startP;
25 Result temp;//現在の時点まで保存する結果データ
26 //第二点開始から順次判断
27 for (int i = 1; i < arr.Length; i++)
28 {
29 //造物对象
30 nextP = 新しい位置(curP,arr[i]);
31 temp = 新しい結果(startP, nextP);
32
33 //現在の判断の和が結果リスト内のデータより大きいかどうか
34 if (temp.RelativeElevation > rlist[0].RelativeElevation)
35 {//場合は削除結果リストより大きいため、現在の結果を追加します
36 rlist.Clear();
37 rlist.Add(一時);
38 }
39 //現在の判断の和が結果リスト内のデータに等しいかどうか
40 else if (temp.RelativeElevation == rlist[0].RelativeElevation)
41 {
42 rlist.Add(一時);
43 }
44 //現時点で新しい低点かどうか判断する
45 else if(nextP.EndElevation<=startP.StartElevation)
46 {
47 スタートP = 次P;
48 }
49 curP = nextP;
50 }
51 }
52
53 rlist を返します。
54 }
代価にはさらにもう一つの利益がある
本体思想就是模拟一不断裂山的人,反復完一遍后要回答那座山和山谷的相对落差最大
完整序ここにあります
主にこれらのタイプが多く使用されます。
部分コードには、以下に示すように、いくつかの好ましくない処理が含まれる。
欢迎拍砖