Sinceramente sta iniziando ad essere difficile capire cosa sbaglio.
#include <bits/stdc++.h>
using namespace std;
void punto(vector<string> &temp, vector<string> &input, int k){
for(int i = 0; i < input.size(); ++i){
temp[i + k] += input[i];
}
}
void asterisco(vector<string> &temp, int k, int n){
for(int i = 0; i < n; ++i){
temp[i + k] += string(n, '*');
}
}
int main(){
int n, K; cin >> n >> K;
vector<string> input(n), temp, sol;
for(int i = 0; i < n; ++i){
cin >> input[i];
}
sol = input;
for(int k = 0; k < K-2; ++k){
temp.resize(sol.size() * input.size());
for(int i = 0; i < sol.size(); ++i){
for(char c : sol[i]){
if(c == '.')
punto(temp, input, i*input.size());
else
asterisco(temp, i*input.size(), n);
}
}
sol = temp;
temp.clear();
}
string asterischi = string(sol[0].size(), '*');
for(int i = 0; i < input.size(); ++i){
for(int j = 0; j < sol.size(); ++j){
for(int l = 0; l < input[i].size(); ++l){
if(input[i][l] == '.')
cout << sol[j];
else
cout << asterischi;
}
cout << endl;
}
}
return 0;
}
questo è il mio codice, si crea il penultimo pattern e poi con quei 3 for alla fine li stampa in fila, tutto corretto tranne l’ultimo case.
sinceramente mi viene difficile pensare sia un problema dell’algoritmo, perchè se per gli altri 18 funziona… penso sia un problema di output troppo grande, quindi ho provato a fare da locale, ma con il freopen mi da tutti execution killed.
Devo impararmi qualche funzione di input output oppure si risolve in modo più semplice?grazie in anticipo a tutti quelli che mi fanno capire che sbaglio e come posso migliorare.