Se consideră un șir de caractere format din N caractere literă mare ale alfabetului englez. Șirul poate fi rotit circular spre stânga cu k poziții. Să se determine poziția minimă k cu care poate fi rotit circular spre stânga șirul inițial astfel încât șirul obținut să fie minim lexicografic. #2118 – minim
Puțin ajutor vă rog!
Mulțumesc anticipat.
Răspunsuri la întrebare
Răspuns de
6
#include <iostream>
#include <cstring>
using namespace std;
int main() {
ifstream f("minlex.in");
ofstream g("minlex.out");
char s[200001];
f >> s;
char sir[200001];
int i = 0;
int h = strlen(s);
while (s[i] != '\0') {
sir[i] = s[i];
sir[h + i] = s[i];
++i;
}
int ii = 0;
for (int i = 0; i < h; ++i)
if (strcmp(sir + i, s) < 0) {
strcpy(s, sir + i);
ii = i;
}
g << ii;
return 0;
}
Utilizator anonim:
Mulțumesc frumos! (^_^)
Alte întrebări interesante
Engleza,
8 ani în urmă
Matematică,
8 ani în urmă
Matematică,
8 ani în urmă
Informatică,
8 ani în urmă
Matematică,
8 ani în urmă
Matematică,
9 ani în urmă
Matematică,
9 ani în urmă