Попробуй его исполнить так:
#include
#include
#include
#include
#include
int main() {
std::fstream file("C:\\Users\\Home\\Downloads\\24.txt");
if (!file.is_open()) {
std::cerr << "Fail" << std::endl;
return 1;
}
std::string s;
getline(file, s);
file.close(); // Закываем файл после чтения строки
std::vector y;
int count = 0;
int k = 0;
for (int i = 0; i < s.length(); i++) {
if (s[i] == 'D') {
k++;
if (k > 1) {
y.push_back(count);
count = 1; // Начинаем новый счетчик с текущей 'D'
k = 1; // Сбрасываем k, так как текущая 'D' может быть началом следующего сегмента
}
} else {
count++;
}
}
// Добавляем последний сегмент, если он не был добавлен
y.push_back(count);
// Находим максимальный элемент в векторе
auto max_element = std::max_element(y.begin(), y.end());
if (max_element != y.end()) {
std::cout << *max_element << std::endl;
} else {
std::cout << "No valid segments found." << std::endl;
}
return 0;
}
И попробуй вот с таким 24.txt
AABCDABCDABCDABCDDDABCDA
#include <fstream>
#include <sstream>
#include <vector>
#include <algorithm>
#include <string>
#include <unordered_map>
#include <cmath>
#include <unordered_set>
#include <bitset>
int main() {
fstream file("C:\\Users\\Home\\Downloads\\24.txt");
if (! file.is _open()) {
cerr << "Fail(" << endl;
}
string s;
int k = 0;
vector<int> y;
int count = 0;
getline(file, s);
for (int i = 0; i < s.length(); i++) {
if ((s[i] == 'D' && k == 0)) {
count++;
k++;
}
else if ((s[i] != 'D' && k == 1)) {
count++;
}
else if ((s[i] != 'D' && k == 0)) {
count++;
}
else if (s[i] == 'D' && k == 1) {
k = 0;
y.push_back(count);
count = 0;
}
}
sort(y.begin(), y.end());
cout << y.front() << "\t" << y.back();
return 0;
}
крч это код под эту задач:Текстовый файл содержит только заглавные буквы латинского алфавита (ABC…Z). Определите максимальное количество идущих подряд символов, среди которых не более одной буквы D. в ответе должно быть 354(это точно) но у меня код выдает 320. не могу найти ошибку. прошу попытаться найти ошибку в проге и пояснить что да как и не надо писать что питон лучше или что тебе это не надо и т.п...
кстати вот код на питоне к этой задаче: f = open('24.txt')
a = f.readline().split('D')
m = 0
for i in range(len(a) - 1):
m = max(m,len(a[i])+len(a[i+1])+1)
print(m)