String Transformation(规律)[STL-巧用vector]

题目链接:http://exam.upc.edu.cn/problem.php?id=7040

题意:给你两个s1,s2,然后可以在任意位置加或减{aa,bb,abab};

问你可以通过变化来            得到s2.

后来你会发现这个题其实    与    a和b的奇偶性有关,(不难想到)。。。

1、两个字符串都没有c的情况下,考虑a和b的奇偶性,只要两个串的a和b的奇偶性相同即可。

2、()C()C()C……其实有C就是把它划分成一个一个区间对区间里的a和b的奇偶性来讨论。

贴上代码:

#include
using namespace std;
inline int f(char str[],int s,int f,char c){
    int sum=0;
    for(int i=s;i

 

 

后来看了看网上的博客,看到别人有更加高超的做法:利用vector和异或来实现,不得不佩服。

#include
using namespace std;
vectorf(string s){
    vectorv;
    int sum=0;
    for(int i=0;i<=s.size();i++){
        if(i==s.size()||s[i]=='c'){
            v.push_back(sum);
            sum=0;
        }
        else{
            sum^=s[i];
        }
    }
    return v;
}
int main()
{
    string s1,s2;
    while(cin>>s1>>s2){
        if(f(s1)==f(s2))printf("Yes\n");
        else{
            printf("No\n");
        }
    }
    return 0;
}

 

你可能感兴趣的:(题库,中石油,stl)