Cod sursa(job #893019)

Utilizator beldeabogdanBogdan Beldea beldeabogdan Data 26 februarie 2013 12:39:52
Problema Subsir Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.89 kb
#include <cstdio>
#include <cstring>
using namespace std;

int mat[505][505];
char s1[505],s2[505];
int l1,l2,i,j;
int maxv,maxnr;

int maxim(int a,int b,int c) {
    if (a>=b && a>=c) return a;
    if (b>=a && b>=c) return b;
    return c;
}

int main() {
    freopen("subsir.in","r",stdin);
    freopen("subsir.out","w",stdout);
    scanf("%s %s",s1,s2);
    l1 = strlen(s1);
    l2 = strlen(s2);
    for (i=l1;i>=1;i--) s1[i] = s1[i-1];
    for (i=l2;i>=1;i--) s2[i] = s2[i-1];
    for (i=1;i<=l2;i++) {
        for (j=1;j<=l1;j++) {
            if (s1[j] == s2[i]) mat[i][j] = mat[i-1][j-1] +1;
            //else mat[i][j] = maxim(mat[i-1][j],mat[i-1][j-1],mat[i][j-1]);
            if (mat[i][j] == maxv) maxnr++;
            else if (mat[i][j] > maxv) {
                maxnr = 1;
                maxv = mat[i][j];
            }
        }
    }
    printf("%d",maxnr);
}