首页 > 其他分享 >4221. 洗牌

4221. 洗牌

时间:2023-04-02 13:12:02浏览次数:38  
标签:dist string int 洗牌 sff 4221

原题链接:https://www.acwing.com/problem/content/description/4224/

#include<bits/stdc++.h>
using namespace std;

string a,b,c;
unordered_map<string,int> dist;
int n;

string sff(string a,string b)
{
    string c;
    for(int i=0;i<n;i++)
    {
        c+=a[i];
        c+=b[i];
    }
    return c;
}

void bfs()
{
    queue<string> q;
    string x=sff(b,a);
    dist[x]=1;
    q.push(x);
    while(q.size())
    {
        auto t=q.front();
        q.pop();
        if(t==c) return;
        string a,b;
        for(int i=0;i<n;i++) a+=t[i],b+=t[i+n];
        string c=sff(b,a);
        if(!dist.count(c)){
            dist[c]=dist[t]+1;
            q.push(c);
        }
    }
}
int main()
{
    int tt;
    scanf("%d",&tt);
    for(int i=1;i<=tt;i++)
    {
        dist.clear();
        cin>>n;
        cin>>a>>b>>c;
        bfs();
        if(!dist.count(c)) dist[c]=-1;
        printf("%d %d\n",i,dist[c]);
    }
}

标签:dist,string,int,洗牌,sff,4221
From: https://www.cnblogs.com/linearlearn/p/17280281.html

相关文章

  • P4221 [WC2018]州区划分 题解
    题目链接题目描述给出\(n\)个城市,\(m\)条边,一个划分合法当且仅当所有划分中的点集和集合中点之间存在的边集所构成的图不构成欧拉回路且联通。定义一个点集的值为......
  • 自动洗牌机c++
    首先是字符数组与结构体的两个应用比较,牌组s1,s2,s3...,如果用字符数组是不能够把s1捆绑在一起的,观察发现牌组都是一个花色捆绑一个数字,可以联想到结构体。其次因为涉及交换,......
  • 比尔·盖茨:AI将为每人创造一个私人助手!科技市场面临洗牌?
       自ChatGPT爆火以后,硅谷大厂们开启了生成式AI“军备竞赛”,都在争相推出能生成文字或影像的人工智能工具,科技圈或将迎来大变局。    在这场变局中,微软似乎已......
  • CP1067 模拟洗牌
    考到了函数的递归+回溯,很有意思俺的做法:#include<stdio.h>#include<ctype.h>#include<string.h>#include<math.h>charb[1000];charc[1000];chard[1000];cha......
  • 2013手机App发展趋势预测:遇冷和洗牌
    自从2009年3G发牌,iPhone、Android等智能手机大规模上市,手机App市场呈现火爆态势。经历了将近4年的发展,2013年手机App市场将何去何从?接下来,根据笔者长期的观察,从市场、产品、......
  • 完美洗牌问题
    完美洗牌问题:(一)有长度为2n的数组{a1,a2...an,b1,b2...bn},希望排序后为{a1,b1,a2,b2...an,bn},希望时间复杂度为O(n),空间复杂度为O(1)(二)解析:有两副牌,一个人拿的牌为a1......
  • Java斗地主洗牌分牌
     packagecn.edu.lcudcc.collection_test;publicclassCard{privateStringsize;privateStringcolor;privateintindex;//真正的大小pu......
  • java实现扑克牌游戏(洗牌,发牌,排序)
    packagepoker.bean;importlombok.AllArgsConstructor;importlombok.Getter;importlombok.NoArgsConstructor;importlombok.Setter;importjava.lang.annotatio......
  • 384. 打乱数组(洗牌算法)
    给你一个整数数组 nums ,设计算法来打乱一个没有重复元素的数组。打乱后,数组的所有排列应该是 等可能 的。实现 Solution class:Solution(int[]nums) 使用整数数......
  • 洗牌算法
    洗牌算法   点评:上面即为洗牌算法的思想,其本质是对数组元素进行随机重排。数组中每个元素经过洗牌算法后落在数组某个位置上的概率是相等的,洗牌算法在......