【发布时间】:2017-10-08 01:47:52
【问题描述】:
我有一长串数字,我想记录列表中最长的连续数字。
每当一个数字与前一个数字相差 10 或小于 10 时,我想增加一个计数器。示例:
1
53
32
74
74
75
75
74
98
2
2
4
3
2
3
1
3
2
74,74,75,75,74 将被计算在内,因为它们之间的距离小于 10。所以这将是5连胜。之后是98甚至更长的连胜。因此,由于有较长的连胜,计数器需要丢弃前一个连胜,因为它不是最大的连胜。它基本上会重置。
list of numbers i'm working with: https://pastebin.com/aga6kkq2
这是我当前的代码:
vector<int> numbers;
for (int i = 0; i < numbers.size() - 1; i += 2)
{
cout << numbers[i] << " first set \n" << numbers[i + 1] << " second set " << endl;
int b = numbers[i];
int a = numbers[i + 1];
int difference = b - a;
if (difference <= 10)
{
count++;
if (difference > 10) {
break;
}
}
}
这将获取第一对数字并将它们减去以查看其是否小于 10。我相信有更好的方法。它不准确,偏离了 4。此列表中最长的连续连续记录应该是 140。实现此目标的正确方法是什么?
【问题讨论】:
-
您的具体问题是什么? “请为我编写一个更好的代码版本”不是问题。
-
@Sam Varshavchik 如何在序列中找到相似的数字并记录最大连续条纹?它在标题中。我尝试的方式显然不起作用,这就是我在这里的原因!
-
嗯,这样做的方法是打开一个文本编辑器,然后编写一些 C++ 代码来执行此操作。这就是您问题的准确答案。
-
这很酷。无论如何,我的代码不起作用,我的问题仍未得到解答。我来这里不是为了被拥有 50k+ 代表的人拖钓。