【问题标题】:Pick the Packages from Heaviest to Lightest从最重到最轻的包裹
【发布时间】:2021-11-06 23:04:58
【问题描述】:

所以我有一个我需要做的测试评估,这是我一直遇到的一个问题。我需要选择最重的物体(最大的数字)并将它们按堆叠顺序放置(底部重,顶部轻)我遇到的问题是我不知道从哪里开始开始 确切地说,我使用的代码是 C#,但是我知道我必须使用排序方法。所以我的主要问题是我试图找出我的开始是什么以及如何从他们那里取得进展。另外我相信这可能是在 codin 游戏上,但尚未在任何地方找到它,如果有人能找到它的名称,那也会有很大帮助。

【问题讨论】:

    标签: c# package


    【解决方案1】:

    我认为在这种情况下,调用 Sort 有点过头了,因为它在 IEnumerables 上使用,你没有也不需要创建它。

    我认为只使用这个页面来学习会更容易:https://www.tutorialspoint.com/Chash-program-to-find-the-maximum-of-three-numbers

    在这种情况下,排序似乎没有帮助,因为您需要返回权重的索引,而不是大小。

    您可以尝试创建一个带有索引和权重的字典,并使用 linq 找到最大的权重:

        public static int GetHeaviestWeightIndex(int weight1, int weight2, int weight3)
        {
            var weightToIndexMapping = new Dictionary<int, int> {{weight1, 0}, {weight2, 1}, {weight3, 2}};
            return weightToIndexMapping[weightToIndexMapping.Keys.Max()];
        }
    

    如果您坚持使用Sort,您可以尝试使用SortedDictoinary,如下所示:https://www.geeksforgeeks.org/sorteddictionary-class-in-c-sharp/

    【讨论】:

      【解决方案2】:

      没有任何分配、集合和列表:

      using System;       
      
      public class Program
      {
          public static void Main(string[] args)
          {
              var a = 13;
              var b = 14;
              var c = 15;
              
              Console.WriteLine(Solve(a, b, c));      
          }
          
          public static int Solve(int weight0, int weight1, int weight2)
          {
              return weight0 > weight1
                  ? weight0 > weight2
                      ? 0 : 2
                  : weight1 > weight2
                      ? 1 : 2;
          }   
      }
      

      请注意,它不会检查是否有负面影响。

      【讨论】:

        猜你喜欢
        • 2014-02-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-08-05
        • 1970-01-01
        • 2014-01-08
        • 2022-06-11
        相关资源
        最近更新 更多