Correttore online – Facili
Una stringa di caratteri si dice palindroma se risulta identica sia che venga letta da sinistra a destra sia che venga letta da destra a sinistra.
Per esempio, acca è una stringa palindroma.Una sottostringa è una sequenza di caratteri consecutivi scelti dalla stringa data.
Per esempio, ac è una sottostringa di acca mentre aca non lo è perché un carattere viene saltato in essa.Scrivere un programma che riceve una stringa S palindroma in ingresso, e restituisce la sottostringa di S di massima lunghezza che non sia palindroma.
Nota: il correttore considera la stringa S in ingresso anche non palindroma.
In caso di più sottostringhe di pari lunghezza massima che soddisfano i requisiti sopra, il programma deve restituire quella che appare più a sinistra.
Dati di input
Il file input.txt è composto da una sola riga contenente la stringa S fornita in ingresso.
Tale stringa è una sequenza non vuota, costituita dalle lettere dell’alfabeto codificate in ASCII, e la sua massima lunghezza è di 100 caratteri.Dati di output
Il file output.txt è formato da una sola riga contenente la sottostringa di S di massima lunghezza non palindroma.
Se tutte le sottostringhe non vuote di S sono palindrome, il file deve contenere l’indicazione NO SOLUZIONI.Nota: il correttore si aspetta la risposta “NO SOLUZIONI.”, con il punto alla fine…
Esempi di input/output
input.txt output.txt abba abb Autore/i: A.S. Stankevich, ACM ICPC Team St. Petersburg State University of Information technology, Mechanics and Optics.
Tenendo conto delle note…
Se la stringa s non è palindroma allora la risposta è s, altrimenti s = xyz…zyx cioè inizia e finisce con x, poi continua e finisce con y, …
Considero la stringa senza l’ultima lettera t = xyz…zy.
Se t non è palindroma allora t è la sottostringa di lunghezza massima a partire dal lato sinistro…
Se t è palindroma allora x=y, y=z, z=… , cioè tutte le lettere di t e di s sono uguali, s=xxx…xxx, e non esiste una sottostringa di s non palindroma.
Conclusioni:
se s non è palindroma risposta = s altrimenti se t non è palindroma allora risposta = t altrimenti risposta = "NO SOLUZIONI."
/* www.valcon.it OII - Esercizi facili - Antipalindroma */ #include #include // strlen() - strncpy() long palindroma(char* s, int start, int stop) { while(start < stop) { if(s[start] != s[stop]) { return 0; } else { start++; stop--; } } return 1; } int main() { char s[101], ss[101]; FILE* fin =fopen( "input.txt","r"); FILE* fout=fopen("output.txt","w"); fscanf(fin, "%s", s) int n=strlen(s); if(!palindroma(s,0,n-1)) fprintf(fout, "%s", s); else { strncpy(ss, s, n-1); if(palindroma(ss,0,n-2)) fprintf(fout, "NO SOLUZIONI."); else fprintf(fout, "%s", ss); } return 0; }