Программа, генерирующая ключ из идентификатора транзакции
Идентификатор транзакции S-это строка,состоящая только из строчных буквенных символов, то есть S[i] в [a, z]. K называется возможным ключом S, Если существует хотя бы один символ C в [a,z] в каждой подстроке S длины K . Ключ идентификатор-это минимальное из возможных КС.
Ввод:
первая строка содержит идентификатор транзакции S (1<=длина<=1000000)
Выход:
Ключ идентификатора транзакции, то есть минимум возможных ключей Ks.
е.г
Ввод:
zbcde
Выход
3
Ввод:
ббббб
Выход
1
Ввод:
zbzczbz
Выход
2
Что я уже пробовал:
#include<iostream> #include<string> using namespace std; int main() { string s; string s2[100000]; int pos=2,flag=1,i,j; cin>>s; int n= s.size(); for (i=0; i<n; i++) { if (s[i]==s[i+1]) flag=0; pos=1; } while(flag){ for (i=0; i<n-1; i++) { s2[i]=s.substr(i,pos); for (j=0; j<pos; j++) { if (s2[i][j]==s2[i+1][j]) flag=1; else { flag=0; pos++; } } } } cout<<pos<<endl; return 0; }
Richard MacCutchan
Ну что ж, покажите нам свой код и объясните, какая помощь вам нужна. Но не ждите, что кто-то здесь сделает за вас домашнее задание.
CodeBlooded
Я добавил код, это не мое домашнее задание, друг попросил меня о помощи. Однако у меня возникли проблемы с решением этой проблемы. Надеюсь, сейчас этот вопрос уместен?
Richard MacCutchan
Я предлагаю вам сказать своему "другу", чтобы он переписал это со значимыми именами переменных и надлежащим объяснением того, где код идет не так.
Dave Kreskowiak
первая строка содержит идентификатор транзакции S (1<=длина<=1000000)
Э-э-э, кто, черт возьми, когда-нибудь генерирует строку идентификатора из 1 миллиона символов?