【UVA10728】

来源:互联网 发布:程序员和工程师的区别 编辑:程序博客网 时间:2024/04/28 15:27




#include <iostream>#include <cstring>#include <cmath>#include <queue>#include <stack>#include <list>#include <map>#include <set>#include <string>#include <cstdlib>#include <cstdio>#include <algorithm>using namespace std;    int T;char a[35];char b[35];typedef long long ll;int l[35][35];ll c[35][35];int main(){    scanf("%d",&T);getchar();memset(l,0,sizeof(l));memset(c,0,sizeof(c));for(int i=0;i<35;i++){c[i][0] = 1;c[0][i] = 1;}int C = 1;while(T --){gets(a);gets(b);int l1 = strlen(a); int l2 = strlen(b); for(int i=0;i<l1;i++){for(int j=0;j<l2;j++){if(a[i] == b[j]){l[i+1][j+1] = l[i][j] + 1;c[i+1][j+1] = c[i][j];}else {if(l[i][j+1] == l[i+1][j]){c[i+1][j+1] = (c[i][j+1] + c[i+1][j]);}else if(l[i][j+1] > l[i+1][j]){c[i+1][j+1] = c[i][j+1];}else{c[i+1][j+1] = c[i+1][j];}l[i+1][j+1] = max(l[i][j+1],l[i+1][j]);}}}printf("Case #%d: %d %d\n",C++,l1+l2-l[l1][l2],c[l1][l2]);}    return 0;}


0 0
原创粉丝点击