POJ 3087 Shuffle'm Up 模拟题小水

来源:互联网 发布:淘宝店铺图片大全 编辑:程序博客网 时间:2024/06/06 06:35

用map来标记以前出现过的状态

#include <stdio.h>#include <map>#include <string.h>#include <string>using namespace std;int main(){    int t;    int cnt = 0;    scanf("%d", &t);    int c;    while(t--){        char s1[220],s2[220],s12[220],s[220];        map<string,int>Map;        scanf("%d", &c);        scanf("%s %s %s", s1, s2, s12);        cnt++;        bool flag = false;        int len;        int tt = 0;        while(1){            tt++;            len = 0;            for(int i = 0;i < c; i++){                s[len++] = s2[i];                s[len++] = s1[i];            }            s[len] = '\0';            if(strcmp(s,s12)==0){                flag = true;                break;            }            if(Map.find(s)!=Map.end()){                break;            }            Map[s] = 0;            for(int i = 0;i < c;i++){                s1[i] = s[i];                s2[i] = s[i+c];            }        }        if(flag){            printf("%d %d\n", cnt, tt);        }else {            printf("%d -1\n", cnt);        }    }    return 0;}


0 0
原创粉丝点击