algorytm.org

Implementacja w C/C++



Baza Wiedzy
wersja offline serwisu przeznaczona na urządzenia z systemem Android
Darowizny
darowiznaWspomóż rozwój serwisu
Nagłówki RSS
Artykuły
Implementacje
Komentarze
Forum
Bookmarki






Sonda
Implementacji w jakim języku programowania poszukujesz?

Wyszukiwanie liczby palindromów w tekście. - Implementacja w C/C++
Ocena użytkownikóww: *****  / 2
SłabyŚwietny
Nadesłany przez Rafał Świetlicki, 09 maja 2007 01:00
Kod przedstawiony poniżej przedstawia główną część rozwiązania problemu.
Pobierz pełne rozwiązanie.

Jeżeli nie odpowiada Ci sposób formatowania kodu przez autora skorzystaj z pretty printer'a i dostosuj go automatycznie do siebie.

palindromy.c:
//Wyszukiwanie palindromow w tekscie
//Rafal Swietlicki
//www.algorytm.org


#include "stdio.h"

#define nmax 30

int dl(char* s)
{
        int i=0;
        while(s[i]) i++;
        return i;
}

int f1(char* s)
{
        int i, j;
        int n=dl(s);
        int wynik=n;
        int m[nmax][nmax];
        for(i=0;i<n-1;i++)
                m[i+1][i]=1;
        for(j=0;j<n;j++)
        {
                m[j][j]=1;
                for(i=j-1;i>=0;i--)
                {
                        m[i][j]=m[i+1][j-1] && s[i]==s[j];
                        wynik+=m[i][j];
                }
        }
        return wynik;
}

int f2(char* s)
{
        int i, j, k;
        int T[nmax+1][nmax+1]={0};
        int n=dl(s);
        for(i=0;i<n;i++)
        {
                T[i][i]=1;
                for(j=i-1;j>=0;j--)
                {
                        T[j][i]=T[j+1][i]+1;
                        for(k=j+1;k<=i;k++)
                                if(s[j]==s[k])
                                        T[j][i]+=T[j+1][k-1]+1;
                }
        }
        return T[0][n-1];
}

int main()
{
        char slowo[nmax];
        printf("Podaj slowo: ");
        scanf("%s",slowo);
        printf("Ilosc spojnych palindromow w slowie %s wynosi %d.\n",slowo,f1(slowo));
        printf("Ilosc niespojnych palindromow w slowie %s wynosi %d.\n",slowo,f2(slowo));
        return 0;
}
Dodaj komentarz