Răspuns :
#include <iostream>
#include <cstring>
using namespace std;
int n, i, j;
char a[100][100];
int main ()
{
cin >> n;
for (i = 1; i <= n; i ++) cin >> a[i];
for (i = 1; i <= n-1; i ++)
for (j = i+1; j <= n; j ++)
if(strstr(a[i]+strlen(a[i])-2, a[j]+strlen(a[j])-2))
cout << a[i] << " " << a[j] << endl;
return 0;
}
Explicatii:
for (i = 1; i <= n-1; i ++)
for (j = i+1; j <= n; j ++)
se ia un cuvant, iar apoi se parcurg toate cuvintele de dupa el
if(strstr(a[i]+strlen(a[i])-2, a[j]+strlen(a[j])-2))
a[i]+strlen(a[i])-2 = subsirul compus din ultimele 2 caractere ale cuvantului a[i]
a[j]+strlen(a[j])-2 = subsirul compus din ultimele 2 caractere ale cuvantului a[j]
strstr(a[i]+strlen(a[i])-2, a[j]+strlen(a[j])-2) = cauta daca subsirul format din ultimele 2 caractere ale lui a[j] se afla in subsirul format din ultimele doua caractere ale lui a[i]
if(strstr(a[i]+strlen(a[i])-2, a[j]+strlen(a[j])-2)) = daca gaseste subsirul format din ultimele 2 caractere ale lui a[j] in subsirul format din ultimele doua caractere ale lui a[i] executa