把a对b排序一遍,在把b对a排序一遍。输出两次排序结果中的最小值即可。
Solution:
#include <algorithm>
#include <iostream>
#include <utility>
#include <cstring>
#include <cstdlib>
#include <cstdio>
#include <deque>
#include <string>
#include <vector>
#include <cmath>
#include <stack>
#include <queue>
#include <map>
#include <set>
using namespace std;
#define mm(a,i) memset(a, i, sizeof(a));
#define LL long long
#define SC_C(s) scanf("%c", &s)
#define SC(a) scanf("%d", &a)
#define SCC(a,b) scanf("%d %d", &a, &b)
#define SCCC(a,b,c) scanf("%d %d %d", &a, &b, &c)
#define FXA(i,a,n) for(i=a; i<n; i++)
#define FDA(i,a,n) for(i=a; i>n; i++)
#define FXDA(i,a,n) for(i=a; i<=n; i++)
#define FDDA(i,a,n) for(i=a; i>=n; i++)
#define FXB(i,a,n) for(i=a; i<n; i--)
#define FDB(i,a,n) for(i=a; i>n; i--)
#define FXDB(i,a,n) for(i=a; i<=n; i--)
#define FDDB(i,a,n) for(i=a; i>=n; i--)
#define PF(n) printf("%d\n", n);
#define PFF(n,m) printf("%d %d\n", n, m);
#define PFFF(x,y,z) printf("%d %d %d\n", x, y, z);
#define PF_Case(i) printf("Case %d:\n",i);
#define PF_C(i) printf("%c:\n",i);
#define PF_L(x) printf("%I64d\n",x);
#define IN freopen("D:\\in.txt","r",stdin);
#define ENT printf("\n");
#define MAX(a,b) a>b?a:b
#define MIN(a,b) a<b?a:b
const int Pie = 3.14;
string a,b;
int main()
{
#ifndef ONLINE_JUDGE
IN
#endif // ONLINE_JUDGE
while(cin>>a>>b)
{
int i,j,t,m,n;
int temp,conut1,conut2;
i=j=t=0;
m=a.length();
n=b.length();
while(j<m&&i<n)
{
if(a[j]+b[i]-96<=3)
i++,j++;
else
t++,i=0,j=t;
}
conut1=m+n-i;
i=j=t=0;
while(j<n&&i<m)
{
if(b[j]+a[i]-96<=3)
i++,j++;
else
t++,i=0,j=t;
}
conut2=m+n-i;
printf("%d\n",conut1 < conut2 ? conut1 : conut2 );
}
return 0;
}
{
#ifndef ONLINE_JUDGE
IN
#endif // ONLINE_JUDGE
while(cin>>a>>b)
{
int i,j,t,m,n;
int temp,conut1,conut2;
i=j=t=0;
m=a.length();
n=b.length();
while(j<m&&i<n)
{
if(a[j]+b[i]-96<=3)
i++,j++;
else
t++,i=0,j=t;
}
conut1=m+n-i;
i=j=t=0;
while(j<n&&i<m)
{
if(b[j]+a[i]-96<=3)
i++,j++;
else
t++,i=0,j=t;
}
conut2=m+n-i;
printf("%d\n",conut1 < conut2 ? conut1 : conut2 );
}
return 0;
}