Top.Mail.Ru
Ответы

Проблема с кодом с++

#include <iostream>
#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)

Дополнен

h ttps://inf-ege. sdamgia.ru/problem? id=39253 ссылка на источник

По дате
По рейтингу
Аватар пользователя
Мастер

Попробуй его исполнить так:

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
 #include <iostream>  
#include <fstream>  
#include <vector>  
#include <algorithm>  
#include <string>  
 
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<int> 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

1
 AABCDABCDABCDABCDDDABCDA 
Аватар пользователя
Искусственный Интеллект

у тебя какая-то проблема с кодом
файл 24.txt тоже нужен чтобы понять где ты косячишь...