分析
题目大意
若干个(<=6)个变换规则,问A->B最少步数
一次变换就是一步
方式不同,步时相同
A->B的最少步数问题
解法
首先输出,之后搜索,搜索中如果步数已经超过了10就直接return
如果A已经变成了B记步数小的答案
然后进行交换
最后输出答案
代码如下
#include<bits/stdc++.h>
using namespace std;
string A,B,a[7],b[7];
int n=1,ans=INT_MAX;
void dfs(string x,int step){
if(step>10){//超出10次不去计算
return;//减枝
}
if(x==B){//A变成B记答案
ans=min(ans,step);
return;
}
for(int i=1;i<=n;i++){
int prev=x.find(a[i]);
if(prev!=-1){
string tmp=