首页 > 其他分享 >魔板

魔板

时间:2023-07-23 10:11:36浏览次数:27  
标签:魔板 string temp mbzt substr zt target

#include <bits/stdc++.h>
using namespace std;
struct node{
    string mbzt;
    string dongzuochuan;
};
queue <node> q;
set<string>s;
string start_zt="12345678";
string target_zt;
string A_shangxia(string mbzt){
   string temp;
   temp=mbzt.substr(4,4)+mbzt.substr(0,4);
   return temp;
}
string B_youyi(string mbzt){
   string temp;
   temp=mbzt.substr(3,1)+mbzt.substr(0,3)+mbzt.substr(7,1)+mbzt.substr(4,3);
   return temp; 
}
string C_zhongjianzhuan(string mbzt){
   string temp;
   temp=mbzt.substr(0,1)+mbzt.substr(5,1)+mbzt.substr(1,1)+mbzt.substr(3,1)+mbzt.substr(4,1)+mbzt.substr(6,1)+mbzt.substr(2,1)+mbzt.substr(7,1);
   return temp;
}
int main()
{  
    //cin>>target_zt;
    target_zt="";
    for(int i=0;i<8;i++){
        int d;
        cin>>d;
        target_zt=target_zt+char(d+48);
    }     
    //初始状态入队
    q.push({target_zt,""});
    s.insert(target_zt);   
    while (!q.empty()){        
        //取头状态数据
        string tzhuangtai=q.front().mbzt;       string tdongzuochuan=q.front().dongzuochuan;        
        //删除头节点
        q.pop();              
        //依据规则产生状态
        string tempzt[3];
        tempzt[0]=A_shangxia(tzhuangtai);       tempzt[1]=B_youyi(tzhuangtai);      tempzt[2]=C_zhongjianzhuan(tzhuangtai);      
        //为动作串增加新动作
        string dongzuochuan[3];
        dongzuochuan[0] =tdongzuochuan+"A";     dongzuochuan[1] =tdongzuochuan+"B";     dongzuochuan[2] =tdongzuochuan+"C";            
        //检查刚产生的3个状态情况
        for(int i=0;i<3;i++){
            //如果是目标状态则输出 
            if (tempzt[i]==start_zt){
                 cout<<dongzuochuan[i]<<endl;
                 return 0;
            }         
            //如果不是目标,且是新状态???
            if(s.count(tempzt[i])==0){
                q.push({tempzt[i],dongzuochuan[i]});
                s.insert(tempzt[i]);
            }          
        } 
    }    
    cout<<"wujie"<<endl;
    return 0;
}
 

 

标签:魔板,string,temp,mbzt,substr,zt,target
From: https://www.cnblogs.com/yjb20090514/p/17574721.html

相关文章

  • 循环输出字符串魔板,动态字段
    names=["吴*平(语文)","张学*(语文)","袁莹*(语文)","宋丹*(语文)","...","廉*峰(会计)"]for(nameofnames)console.log(`${name}\n很满意\n满意\n基本满意\n不满意\n\n${name}师德不满意的原因[多选题]\nA歧视......
  • 洛谷P2730 [USACO3.2]魔板 Magic Squares
    题目链接:点这里 一般这种从某种状态转移到目标状态的最短距离,都可以使用BFS来做。从题目给定的初始状态,依次执行题目给定的三种操作,分别是交换上下两行(操作A)、将最后......
  • [USACO3.2]魔板 Magic Squares
    一道简单的bfs题目,关键是怎么表示状态。康托展开适用于全排列,比如一个排列1324,我们要求出它是排第几地排列第一位:第一位比1小的排列都比这个排列小,但是没有ans+=03!......
  • 魔板
    https://www.acwing.com/problem/content/1109/#include<cstring>#include<iostream>#include<algorithm>#include<unordered_map>#include<queue>usingnames......