zoukankan      html  css  js  c++  java
  • 从字符串某位置开始的递增串(dfs)注意for循环中下标的错误

    #include <iostream> 
    #include <string> 
    using namespace std;
    char res[50];int tag=1;
    void dfs(int k,int len, int st,char str[]){//st为结果串的当前位置 
    
        if(k==len){
            res[st]='';
            cout<<"result is:  ";
            cout<<res<<endl;
            return;
        }
        if (st==0)
             for(int j=k;j<len;j++){
                res[st]=str[j];
                dfs(j+1,len,st+1,str);
            }
                
        else {
            int tmp;
            tmp=st;
            if(res[st-1]<str[k]){         //错误:res[st-1]写成str[st-1]
            //    cout<<res[st-1]<<"        "<<str[k]<<endl;//调试使用
                res[st]=str[k];
                tmp=st+1;
            }
            for(int j=k+1;j<=len;j++)    //错误:j<len,这样j=len时就不会调用循环体中的语句        
                    dfs(j,len,tmp,str);
        }
        
    }
    void main(){
        
        char str[]="tocyjkdzcieoiodfpbgcncsrjbhmugdnojjddhllnofawllbhfiadgdcdjstemphmnjihecoapdjjrprrqnhgccevdarufmliqijgihhfgdcmxvicfauachlifhafpdccfseflcdgjncadfclvfmadvrnaaahahndsikzssoywakgnfjjaihtniptwoulxbaeqkqhfwl";
        int k,len=strlen(str);
        for(int i=0;i<len;i++){
            k=0;
            for(int j=i+1;j<len;j++)
                if(str[j]==str[i])
                    k++;
                else
                    str[j-k]=str[j];
            str[len-k]='';
            //cout<<i<<":  "<<str<<endl;
            len=strlen(str);
        }
        cout<<str<<endl;
        dfs(0,len,0,str);
        
    }
  • 相关阅读:
    C#等同于正则表达式的写法
    操作XML
    对比工具集合
    IIS 部署的网站无法启动
    jdk_1.8 下载之后的配置
    sql server 2008认识 DENSE_RANK
    c# 二分查找算法
    c# 使用栈实现有效的括号
    sql server 自定义标量函数
    虚拟机cenos 重置密码
  • 原文地址:https://www.cnblogs.com/ewitt/p/14856031.html
Copyright © 2011-2022 走看看