zoukankan      html  css  js  c++  java
  • hdu 1515 Anagrams by Stack

    题解:

    第一:两个字符不相等(即栈顶字符与目标字符不相等);这种情况很容易处理,将匹配word的下一个字符入栈,指针向后挪已为继续递归。

    第二:两个字符相等(即栈顶字符与目标字符相等);这种情况有两种选择

          (1)字符出栈,并将目标word的指针向后挪一位,继续递归;

          (2)将匹配word的下一个字符入栈,指针向后挪一位,继续递归;

    每一次递归用path记录下来路径。当目标word的指针超过最后一位了,说明成功,此时将path输出。

    #include<stdio.h>
    #include<string.h>
    #include<stack>
    using namespace std;
    char str1[1005],str2[1005];
    int len1,len2;
    char path[2005];
    void test(int x,int y,stack<char> st,int t)
    {
        int j;
    
        if(y==len2)
        {
            printf("i ");
            for(j=0; j<t; j++)
                printf("%c ",path[j]);
            printf("
    ");
            return ;
        }
        if(st.empty ())
        {
            st.push(str1[x+1]);
            path[t]='i';
            test(x+1,y,st,t+1);
            st.pop();
            return ;
        }
        char cur=st.top ();
        if(x==len1 && cur!=str2[y])
            return ;
    
        st.push(str1[x+1]);
        path[t]='i';
        test(x+1,y,st,t+1);
        st.pop();
    
        if(cur==str2[y])
        {
            st.pop();
            path[t]='o';
            test(x,y+1,st,t+1);
            st.push(str1[x]);
        }
        return ;
    }
    int main()
    {
        int i,j;
        while(scanf("%s%s",str1,str2)!=EOF)
        {
            len1=strlen(str1);
            len2=strlen(str2);
            printf("[
    ");
            if(len1<len2)
            {
                printf("]
    ");
                continue;
            }
            stack<char> st;
            st.push(str1[0]);
            test(0,0,st,0);
            printf("]
    ");
        }
        return 0;
    }
  • 相关阅读:
    shell进行mysql统计
    java I/O总结
    Hbase源码分析:Hbase UI中Requests Per Second的具体含义
    ASP.NET Session State Overview
    What is an ISAPI Extension?
    innerxml and outerxml
    postman
    FileZilla文件下载的目录
    how to use webpart container in kentico
    Consider using EXISTS instead of IN
  • 原文地址:https://www.cnblogs.com/XDJjy/p/3349611.html
Copyright © 2011-2022 走看看