如何比较数组c#中的下一个值



过程包括在传送带上滚动的不同尺寸的布丁中添加浇头。

  1. 每个布丁至少需要添加1克浇头
  2. 如果两个相邻的布丁大小不同,较大的布丁需要比较小的布丁多至少1g
  3. 如果相邻的两块大小相同,那么浇头的数量相对于彼此并不重要

XXXXXXX

public class Program
{
static void Main(string[] args)
{
//topping t1 = new topping();
//t1.CalTopping();
topping t1 = new topping();
t1.CalTopping();
}
public class topping
{

public void CalTopping()
{
int[] cupcakes = { 1, 2, 2, 6, 2, 1 };
int tot = 0;
int topping = 0;
//int i=0;

for (int i = 0; i < cupcakes.Length; i++)
{

if (i + 1 < cupcakes.Length)
{
topping = 1;
if (cupcakes[i] == cupcakes[0])
{
topping = 1;
}
else if (cupcakes[i] > cupcakes[i - 1])
{
topping = topping + 1;
}
else
topping = 1;
}
tot = tot + topping;
Console.WriteLine(cupcakes[i] + " = " + topping + "g");
}
Console.WriteLine("total toppings Amount:-" + tot + "g");
}
}
}

}

您可以使用以下算法来满足要求:

  1. 第一个纸杯蛋糕有1g的浇头
  2. 如果现在的纸杯蛋糕比以前的大,它会比以前多得到1g的浇头,否则它会得到1g浇头
  3. 对所有纸杯蛋糕重复步骤2

可以使用类似的循环来处理顺序对

for (int i = 1; i < cupcakes.Length; i++) { 
var current = cupcakes[i];
var previous = cupcakes[i-1];
...

现在,问题指定了相邻,而不是后续。为了处理这个问题,我们还需要使用相同的逻辑以相反的顺序进行循环,但在这个过程中,我们需要取当前分配的最高金额和新金额的最大值。

例如,尺寸为1, 2, 2, 6, 3, 2, 1的纸杯蛋糕会得到尺寸为的浇头

  1. 向前传球:1, 2, 1, 2, 1, 1, 1
  2. 反向通过:CCD_ 3
  3. 两者的最大值:1, 2, 1, 4, 3, 2, 1

这不太适合与传送带类似,因为它需要传送带前后移动,并且需要将所有纸杯蛋糕都放在传送带上。但像这样的算法在现实世界中也有应用。

相关内容

  • 没有找到相关文章

最新更新