zoukankan      html  css  js  c++  java
  • 字串变换(bfs)

    因为bfs一直不会的缘故,所以今天要认真做几道题练习一下qwq


    P1032 字串变换

    对于这道题很明显就是bfs

    可以搜索顺便记录步数

    注意要判重 可以用map

    输入也要注意

    (代码是抄的 因为我太弱了还不熟悉)

    //From Luogu Lemoning
    #include<bits/stdc++.h> using namespace std; string a,b; string sa[8],sb[8]; map<string ,int >map1; int l; queue<string> q; queue<int> bb; int bfs(){ int m,n; string s,ss; while(!q.empty()&&q.front()!=b&&bb.front()<=10){ if(map1[q.front()]==1){//判重 q.pop(); bb.pop(); continue; } map1[q.front()]=1; for(int i=1;i<=l;i++){ s=q.front(); while(1){ m=s.find(sa[i]); if(m==-1) break; ss=q.front(); ss.replace(m,sa[i].size(),sb[i]); q.push(ss); bb.push(bb.front()+1); s[m]='~';//将S里子串sa[i]的第一次出现位置随便换成另一种无关的字符,这样就可以查找到S里子串sa[i]的下一个出现位置 } } q.pop(); bb.pop(); } if(q.empty()==1||bb.front()>10) return -1; else return bb.front(); } int main(){ cin>>a>>b; l=1; while(cin>>sa[l]>>sb[l]) l++; l--; if(l==0&&a!=b){ puts("NO ANSWER!"); return 0; } q.push(a); bb.push(0); int k=bfs(); if(k==-1){ puts("NO ANSWER!"); }else{ cout<<k; } return 0; }
  • 相关阅读:
    Cookie和Session
    Csrf
    Django中间件
    ORM操作
    Django框架简介
    Django之模型的高级用法
    Linux基础(二)之命令
    01 numpy库(一)
    Django之缓存配置
    20 Django REST Framework 更改PUT/PATCH/DELETE的传参字段,默认为pk
  • 原文地址:https://www.cnblogs.com/duojiaming/p/11662007.html
Copyright © 2011-2022 走看看