【发布时间】:2016-04-20 21:10:00
【问题描述】:
我是编程初学者,我正在尝试编写一个程序来解决以下数学问题:
“在一个圆圈上,我们有 108 个数字。任何 20 个连续数字的总和总是 1000。在位置“1”我们有数字 1,在位置“19”我们有数字 19,在位置“50”我们有 50 号。我们在位置“100”上有什么数字?”数字总是整数。
到目前为止,我知道如何使用数组和循环结构,如“for”。
我试图设置一个变量“check”,我将其初始化为“false”,以便稍后将其更改为 true,当我会在位置“100”上找到数字时。
我最初的想法是遍历数组并计算每 20 个连续数字的总和。我使用了两个变量来为每个不是 1、19 或 50 的位置分配值,然后求和。我在两个“for”结构中做到了这一点,一个在另一个内部。当然,这会产生一个问题,即我无法正确计算前 20 个数字的值。
我在 MSDN 上查看了有关“队列”结构的一些信息,但我不明白如何在我的特定情况下使用它。
如果有人对我应该如何处理这个问题有一些建议,请告诉我。 谢谢。
正如你所问,这是我目前为止编写的代码。请考虑到我真的是在乞求编程,我还有很多东西要学。
check = true;
int[] array = new int[108];
for (counter = 1; counter <= array.Length; counter++)
{
if (counter !=1 || counter !=19 || counter !=50)
{
for (i = 1; i <= 999; i++)
{
array[counter] = i;
if (counter >= 20)
{
for (consecutive = counter; consecutive => 2; consecutive--)
{
checkValue = array[consecutive] + array[consecutive]-1;
}
if (checkvalue != 1000) check = false;
}
}
}
}
【问题讨论】:
-
我们需要看一些代码。有人将您指向
Queue吗?它可能不一定是最佳选择。到目前为止,我很难理解这些要求,因为我看不到你已经拥有的东西。 -
请编码......并且在位置“21”我们有值 21?或者这些位置是固定的,其余字段可以有随机数?
-
我认为解决方案取决于前 20 个数字。您可以使用数组并将您的索引除以 108。例如,当您从 107 数字计算数字时,您将从 107 计算到 126,或者作为索引 107 mod 108 = 107 和 126 mod 108 = 18。
-
我自己找到了“队列”,我真的没有人指导我。只有位置“1”、“19”和“50”具有这些固定值。其余的可以是任何东西,我基本上试图找出满足规则的位置“100”上的哪个值。
-
@Pedro Delarte,您需要算法或有用的数据结构来解决问题吗?
标签: c# arrays algorithm math queue