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);
        
    }
  • 相关阅读:
    Oracle存储过程
    eclipse使用小技巧
    A.N.T的使用
    Java中JDBC连接数据库(MySQL)
    SQL常用语句例子
    c/s&&b/s区别浅析
    ngRoute+ngAnimate与JQM中的页面跳转的区别
    jQueryMobile与AngularJS的区别
    jQueryMobile--栅格布局
    jQueryMobile--基础
  • 原文地址:https://www.cnblogs.com/ewitt/p/14856031.html
Copyright © 2011-2022 走看看