fbpx

Problema #2441 – pereche – Rezolvari PBInfo

de Mihai-Alexandru

Cerința

O pereche de cuvinte, unul cu număr par de litere, iar celălalt cu număr impar de litere, se numește descentrată dacă se poate obține cuvântul cu număr par de litere din celălalt, prin duplicarea caracterului din mijlocul acestuia.

Exemplu:

Exemplu

Intrare

crezi ca poti sa creezi ceva original

Ieșire

DA

Explicație

Perechea descentrată de cuvinte este crezicreezi.

#include <bits/stdc++.h>
using namespace std;

int nrcif(const char s[])
{
    int i = 0;
    int cnt=0;
    while(s[i]!='\0')
        cnt++ , i++;
    return cnt;
}

bool nr(int i ,const char s[])
{
    return ((int)s[i] >= 65 && (int)s[i] <= 90) || ((int)s[i] >= 97 && (int)s[i] <= 122);
}

void SplitText(const char s[], char cuv[100][30], int &n)
{
    n = 0;
    int i = 0 , j=0;
    bool ok=false;
    bool fct= false;
    while(s[i]!='\0')
    {
        if(nr(i , s))
        {
            if(ok)
            {
                if(fct==false)
                n++ , ok = false;
                else
                    ok=false , fct = false;
            }
            cuv[n][j]=s[i];
            j++;
            if(!nr(i+1 , s))
                cuv[n][j]='\0';
        }
        else
        {
            if(i == 0)
                fct=true;
            j=0;
            ok = true;
        }
        i++;
    }
    n++;
}

int main()
{
    char s[100] , m[100][30];
    int n=0;
    cin.getline(s , 100);
    SplitText(s , m, n);
    bool pereche=false;
    for(int i = 0 ; i < n ; ++i)
    {
        for(int j = 0 ; j < n ; ++j)
        {
            if(nrcif(m[j])%2==1 && nrcif(m[i])%2==0)
            {
                int poz = nrcif(m[j]) / 2;
                bool pd=true;
                int q = 0 , k = 0;
                while(m[i][q]!='\0')
                {
                    if(q==poz)
                        q++;
                    if(m[i][q]!=m[j][k])
                        pd=false;
                    q++ , k++;
                }
                if(pd)
                    pereche = true;
            }
        }
    }
    if(pereche)
        cout << "DA";
    else
        cout << "NU";
    return 0;
}
Comentarii

S-ar putea sa iti placa