Informatică, întrebare adresată de mountainyourself, 9 ani în urmă

limbaj:C++
Se dă un şir de caractere ce conţine cuvinte formate din litere mici ale alfabetului englez, separate prin unul sau mai multe spații. Să se determine câte cuvinte din sir sunt anagrame ale ultimului cuvânt, fără a fi identice cu acesta.

Răspunsuri la întrebare

Răspuns de express
6
#include <cstdio>
#include <cstring>

using namespace std;
int n, i, w[260][27], l, nr, j;
char s[260], *p, t[260][260];
int main()
{
    gets(s);
    p = strtok(s, " ");
    strcpy(t[1], p);
    while(j < strlen(t[1]))
    {
        w[1][t[1][j] - 'a'] ++;
        j ++;
    }
    l = 1;
    while(p != NULL)
    {
        p = strtok(NULL, " ");
        if(p == NULL) break;
        l ++;
        j = 0;
        strcpy(t[l], p);
        while(j < strlen(t[l]))
        {
            w[l][t[l][j] - 'a'] ++;
            j ++;
        }
    }
    for(i = 1; i < l; ++ i)
        if(!memcmp(w[i], w[l], sizeof(w[l]))
           && strcmp(t[i], t[l]))
            nr ++;
    printf("%d", nr);
    return 0;
}

Alte întrebări interesante