gpt4 book ai didi

c++ - 在一个序列中找到相似的数字并记录最大连续连胜

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:12:28 24 4
gpt4 key购买 nike

我有一长串数字,我想记录列表中最长的连续数字。

每当一个数字与前一个数字相差 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。实现此目标的正确方法是什么?

最佳答案

vector<int> numbers;

// some code here to add values to the numbers array

int maxStreak = 0;
int counter = 0;
int previousNumber;
int currentNumber;
for (int i= 1; i < numbers.size(); i++)
{
previousNumber = numbers[i - 1];
currentNumber = numbers[i];

if (abs(currentNumber - previousNumber) <= 10) {
counter++;
maxStreak = (counter > maxStreak) ? counter : maxStreak;
}
else {
counter = 0;
}
}
cout << maxStreak;

这是它的工作原理:

  1. maxStreak 存储最大连胜数。
  2. counter 存储当前连胜的次数。
  3. 循环从数组的第二个元素开始读取,并将数组中的每个数字与其前一个数字进行比较。
  4. 如果两个数字之间的差值等于或小于 10,counter 递增,maxStreak 将适当更新。
  5. 如果两个数之差不等于或小于 10,计数器将被重置为 0。

关于c++ - 在一个序列中找到相似的数字并记录最大连续连胜,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46626801/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com