(字符串、迭代加深搜索)洛谷P1032 字串变换

一、算法分析

首先题目说若在10步之内有解就输出步数,十步之内无解就是NO ANSWER,这就说明了搜索的深度不会超过十步,可以考虑用迭代搜索。迭代深搜基本框架和数据的读入写好之后,就是处理细节了,刚开始打算用链表做,结果自不常用链表,一直写错,后来发现可以用string类里面的find函数和replace函数来解决题目中的替换问题,find函数的作用是在a串中找到b串第一次出现的地方,用法a.find(b) 。而replace可以将a串从第m位开始的len个字符替换成b串,用法a.replace(m,len,b)。然后就高高兴兴打出了代码,结果交上去只有80分,最后一个点WA。(没有进行任何剪枝操作,题目时限比较宽裕,居然没有一个点TLE)。先贴上80分代码。

#include<iostream>
#include<cstdio>
#include<algorithm>
using namespace std;
string st1;
string st2;
const int maxn=15;
int ok=0;
struct method{
   
	string s1;
	string s2;
}p[maxn];
string ss1,ss2;
int cnt;
int d;                              //迭代加深的深度 
void dfs(int cur,string st){
   
	if(cur>d) return;                //因为dfs是同层同步的,所以只要有一个触底就全部触底,那么就说明d深度内无法找到答案 
	for(int i=1;i<=cnt;i++){
            //尝试每种操作 
    string ss=st;
		int m=ss
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值