题意:给出一个源字符串和一个目标字符串,打出所有符合stack操作的i,o串使得对于源字符串的操作能变为目标字符串

思路:搜索,回溯。

之前想过是不是队列,觉得不对那样bfs是求最优解了;也想过用结构体数组来保存访问过的i,o操作序列,也是越写越麻烦,自己把自己绕进去了。

参考了网上的一篇博客,思路特别清晰。

回溯嘛...访问时进入下一个函数循环体,而函数体后认为并没有访问即可

反映到这道题上,如果是入栈操作,在func(s)后怎么入的就怎么弹出来,参数全置到未入栈之前的操作即可,出栈同理。

#include <cstdio>
#include <iostream>
#include <stack>
#include <cstring>
using namespace std;
];//来源字符串
];//目标字符串
];//记录步骤的字符数组
int steplen,sp,tp,n;//sp:字符在sword中的位置,tp:记录字符在tword中的位置
void func(stack&s)
{
    char ch;
    int i;
    if(tp==n)//与目标字符串校对完成,所以step必然是正确的
    {
        ;i
        {
            cout<<step[i]<<" ";
        }
        cout<<endl;
        return;
    }
    if(sp
    {
        s.push(sword[sp++]);
        step[steplen++]='i';
        func(s);
        s.pop();
        steplen--;
        sp--;
    }
    if(!s.empty())//栈s不为空时,对比栈头和当前目标字符
    {              //如果相等,便产生输出o
        ch=s.top();
        if(ch==tword[tp])
        {
            s.pop();
            tp++;
            step[steplen++]='o';
            func(s);
            steplen--;
            tp--;
            s.push(ch);
        }
    }
}
int main()
{
    //freopen("in.txt","r",stdin);
    stack str;
    while(cin >> sword >> tword)
    {
        cout << "[" << endl;
        n=strlen(sword);
        if(n==strlen(tword))
        {
            sp=;
            tp=;
            steplen=;
            func(str);
        }
        cout<<"]"<<endl;
    }
    ;
}

【dfs 回溯】 zoj 1004的更多相关文章

  1. stack+DFS ZOJ 1004 Anagrams by Stack

    题目传送门 /* stack 容器的应用: 要求字典序升序输出,所以先搜索入栈的 然后逐个判断是否满足答案,若不满足,回溯继续搜索,输出所有符合的结果 */ #include <cstdio&g ...

  2. ZOJ 1004 Anagrams by Stack

    Anagrams by Stack 题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=1004 题意:通过堆栈实现将一 ...

  3. 素数环(dfs+回溯)

    题目描述: 输入正整数n,把整数1,2...n组成一个环,使得相邻两个数和为素数.输出时从整数1开始逆时针排列并且不能重复: 例样输入: 6 例样输出: 1 4 3 2 5 6 1 6 5 2 3 4 ...

  4. NOJ 1074 Hey Judge(DFS回溯)

    Problem 1074: Hey Judge Time Limits:  1000 MS   Memory Limits:  65536 KB 64-bit interger IO format: ...

  5. HDU 1016 Prime Ring Problem(经典DFS+回溯)

    Prime Ring Problem Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Other ...

  6. HDU 2181 哈密顿绕行世界问题(经典DFS+回溯)

    哈密顿绕行世界问题 Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total ...

  7. HDU1016 Prime Ring Problem(DFS回溯)

    Prime Ring Problem Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Other ...

  8. uva 193 Graph Coloring(图染色 dfs回溯)

    Description You are to write a program that tries to find an optimal coloring for a given graph. Col ...

  9. P1074 靶形数独 dfs回溯法

    题目描述 小城和小华都是热爱数学的好学生,最近,他们不约而同地迷上了数独游戏,好胜的他们想用数独来一比高低.但普通的数独对他们来说都过于简单了,于是他们向 Z 博士请教,Z 博士拿出了他最近发明的“靶 ...

  10. 剪格子---(dfs回溯)

    如图p1.jpg所示,3 x 3 的格子中填写了一些整数. 我们沿着图中的红色线剪开,得到两个部分,每个部分的数字和都是60. 本题的要求就是请你编程判定:对给定的m x n 的格子中的整数,是否可以 ...

随机推荐

  1. apache动态编译与静态编译

    静态: 在使用./configure 编译的时候,如果不指定某个模块为动态,即没有使用:enable-mods-shared=module或者enable-module=shared 这个2个中的一个 ...

  2. java 读取excel 正常 xls

    package com.sun.test; import java.io.BufferedInputStream;import java.io.File;import java.io.FileInpu ...

  3. mybatis 批量插入值的sql

    <insert id="insertAwardPic" useGeneratedKeys="true" parameterType="java. ...

  4. jquery之全选全不选

    <input type="checkbox" onclick="selall(this)" />全选/全不选 <input type=&quo ...

  5. Spring自动扫描

    需要在Springde 配置文件中加入 <context:component-scan base-package="com.annoation"> base-packa ...

  6. jQuery 事件 - bind() 方法

    定义和用法 bind() 方法为被选元素添加一个或多个事件处理程序,并规定事件发生时运行的函数. 实例1(一个事件) 记得把js引用地址换掉 当点击鼠标时,隐藏或显示 p 元素: <html&g ...

  7. NSBundle、UIImageView和UIButton对比、Xcode文档安装路径、Xcode模拟器安装路径

    1.NSBundle1> 一个NSBundle代表一个文件夹,利用NSBundle能访问对应的文件夹2> 利用mainBundle就可以访问软件资源包中的任何资源3> 模拟器应用程序 ...

  8. tableview选择的时候不要cell的高亮显示样式

    1.若用方法: //-(BOOL)tableView:(UITableView *)tableView shouldHighlightRowAtIndexPath:(NSIndexPath *)ind ...

  9. HeapSpray初窥(2014.12)

    注:环境是xp+ie8 1.HeapSpray简介 Windows的堆因为动态分配和释放的特点,其看起来是不连续(没有规律的),但是仍可以找到一定的规律:大量的连续分配会更倾向使用连续的地址,减少了碎 ...

  10. JAVA常识积累

    java Class<? extends Object> getClass() 这么写是什么意思 Class<? extends Object> 泛型Object以及Objec ...