2014年9月14日 星期日

2014/9/14 codevs 1029 遍历问题

// http://codevs.cn/problem/1029/
#include <iostream>
#include <cstring>
#include <cstdio>

using namespace std;

char s[30];
char t[30];
int ni; int n;
int Ans = 1;

void process(int l, int r)
{
    if( l == r ) return;

    if( s[l] == t[ni] )
    {
        Ans *= 2;
        ni--;
        process(l+1, r);
    }
    else
    {
        for(int i = l; i < r; i++)
            if( s[i] == t[ni] )
            {
                ni--;
                process(i+1, r);
                ni--;
                process(l+1, i);
            }
    }
}

int main()
{
    scanf(" %s", s);
    scanf(" %s", t);
    n = strlen(s);
    ni = n-2;

    process(1, n);
    printf("%d\n", Ans);
}

沒有留言:

張貼留言