G - Shuffle'm Up

时间:2021-10-12 00:27:16
题目大意:
是一个洗牌游戏,首先给出两堆牌,s1,s2,先从s1上面拿一张牌再从s2上面拿一张牌依次往下可以洗好牌,然后把洗好的牌再分成两堆继续洗,直到这堆牌的顺序与给的顺序相同可以停止,当然如果洗不出给出来的顺序也可以停止
看这题首先没有什么特别好的想法,先暴力一下试试吧,,,,,,,,,,,,,,,,,,,,,
///////////////////////////////////////////////////////////////
时间竟然是0 ......真的就是一个模拟题,醉了
#include<stdio.h>
#include<string.h>
#include<math.h>
#include<queue>
using namespace std; #define maxn 300 char L[maxn], e[maxn]; int Find(char s1[], char s2[], char s[], int C, int k)
{
    int i, j;     for(i=j=; i<C; i++)
    {
        L[j++] = s2[i];
        L[j++] = s1[i];
    }     if(strcmp(L, s) == )
        return k;     if(k == )
        strcpy(e, L);
    if(k !=  && strcmp(e, L) == )
        return -;     strncpy(s1, L, C);
    strncpy(s2, L+C, C);     return Find(s1, s2, s, C, k+);
} int main()
{
    int t=, T;     scanf("%d", &T);     while(T--)
    {
        char s1[maxn]={}, s2[maxn]={}, s[maxn]={};
        int C;         scanf("%d%s%s%s", &C, s1, s2, s);         memset(L, , sizeof(L));         int ans = Find(s1, s2, s, C, );         printf("%d %d\n", t++, ans);     }     return ;

}