首页 > 其他 > 详细

huu 5051

时间:2017-07-28 23:26:06      阅读:152      评论:0      收藏:0      [点我收藏+]

模拟,不算bfs,只是用了队列而已

#include <iostream>
#include <cstring>
#include <cstdio>
#include <algorithm>
#include <queue>
#include <map>
using namespace std;
string a,b,c;
int n;
string hh(string a,string b)
{
    string zz="";
      for(int i=0;i<n;i++)
      {
          zz=zz+b[i];
          zz+=a[i];//不能写成zz=zz+b[i]+a[i],有毒
      }
      return zz;
}
int bfs()
{
  string s12=hh(a,b);
   queue<string> q;
   map<string,int> ma;
   q.push(s12);
   ma[s12]=1;
    while(q.size())
    {
       string sab=q.front();
         q.pop();
          if(sab==c) return ma[sab];
         string s1=sab.substr(0,n);
         string s2=sab.substr(n,n);
      string shh=hh(s1,s2);
      if(ma[shh]) return -1;
      ma[shh]=ma[sab]+1;
        q.push(shh);
    }
    return -1;
}
int t;
int main()
{
    scanf("%d",&t);
    for(int kk=1;kk<=t;kk++)
    {
        scanf("%d",&n);
        cin >> a >> b >> c;
      int mm=bfs();
       printf("%d %d\n",kk,mm);
    }
    return 0;
}

 

huu 5051

原文:http://www.cnblogs.com/Wangwanxiang/p/7252734.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!