Ciao, stavo risolvendo ancient text, ma purtroppo non riesco a ottenere 100/100 in quanto due soli output (uno nella subtask 4 e uno nella 6) risultano sbagliati…
Non riesco a capire se c’è un piccolo errore nel mio codice, un caso particolare che non ho considerato o qualcos’altro.
Condivido il mio codice:
#include <bits/stdc++.h>
using namespace std;
// input data
int N, K;
vector<string> S;
int main() {
ios::sync_with_stdio(false);
cin >> N >> K;
S.resize(N);
for (int i = 0; i < N; i++)
cin >> S[i];
// insert your code here
vector<string>mostFrequentChar(K, "");
for (int k=0; k<K; k++) {
const int lettere = 26;
vector<int>charOccurence(lettere, 0);
for (int i=0; i<N; i++) {
charOccurence[(int)(S[i][k] - 'a')] ++;
}
int maxx = 0;
for (int i=0; i<lettere; i++) {
if (charOccurence[i] > maxx) {
maxx = charOccurence[i];
}
}
vector<int>massimi;
for (int i=0; i<lettere; i++) {
if (charOccurence[i] == maxx) {
massimi.push_back(i);
}
}
for (int i=0; i<massimi.size(); i++) {
mostFrequentChar[k] += (char)(massimi[i] + 'a');
}
}
int massimo = -1;
int indice = -1;
for (int i = 0; i<N; i++) {
int conta = 0;
for (int k=0; k<K; k++) {
if (mostFrequentChar[k].find(S[i][k]) != string::npos) {
conta ++;
}
}
if (conta > massimo) {
massimo = conta;
indice = i;
}
}
cout << indice << endl; // print the result
return 0;
}
in pratica quello che faccio è:
-Calcolo dei caratteri più frequenti per colonna: Per ogni colonna k, il codice conta le occorrenze di ogni lettera tra tutte le stringhe. Poi, trova il massimo numero di occorrenze (maxx) per quella colonna. Il codice identifica tutti i caratteri che condividono il massimo numero di occorrenze e li aggiunge tutti alla stringa mostFrequentChar[k].
-Ricerca della stringa con più corrispondenze: Il codice quindi scorre tutte le stringhe e conta, per ciascuna stringa, quante volte un carattere in una data posizione corrisponde a uno dei caratteri più frequenti per quella posizione. L’indice della stringa con il maggior numero di corrispondenze viene memorizzato in indice.
Grazie in anticipo