#include #define MAXLEN 100 char orig[MAXLEN+1],pozm[MAXLEN+1]; int vaha_prid,vaha_ods,vaha_zmen; int c[MAXLEN+1][MAXLEN+1]; int dirs[MAXLEN+1][MAXLEN+1]; int main(void) { int i,j,lorig,lpozm,adir; scanf("%d%d%d%s%s",&vaha_prid,&vaha_ods,&vaha_zmen,orig,pozm); lorig=strlen(orig); lpozm=strlen(pozm); for (i=0;i<=lpozm;i++) { c[0][i]=vaha_prid*i; dirs[0][i]=2; } for (j=0;j<=lorig;j++) { c[j][0]=vaha_ods*j; dirs[j][0]=1; } for (j=1;j<=lorig;j++) for (i=1;i<=lpozm;i++) { if (orig[j-1]==pozm[i-1]) { c[j][i]=c[j-1][i-1]; dirs[j][i]=7; } else { int costd[3]={c[j-1][i]+vaha_ods,c[j][i-1]+vaha_prid,c[j-1][i-1]+vaha_zmen}; int amin=0; if (costd[1]=0;adir=dirs[j][i]) { switch (adir) { case 3: printf("Zmenit '%c' na pozici %d na '%c'\n",orig[j],i+1,pozm[i]); break; case 1: printf("Odstranit '%c' na pozici %d\n",orig[j],i+1); break; case 2: printf("Pridat '%c' za pozici %d\n",pozm[i],i); break; } j+=adir&1;i+=!!(adir&2); } return 0; }