免费视频淫片aa毛片_日韩高清在线亚洲专区vr_日韩大片免费观看视频播放_亚洲欧美国产精品完整版

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費(fèi)電子書(shū)等14項(xiàng)超值服

開(kāi)通VIP
字符子串 任意組合 遞歸

/************************************************************************/

/* 面試題:請(qǐng)編寫(xiě)一個(gè)函數(shù),把字符串中的所有字符子串的各種組合形式全部都顯示出來(lái)。

 

  字符子串的長(zhǎng)度范圍是從一個(gè)字符到字符串的長(zhǎng)度。

  不管排列順序如何,只要兩種組合中的字符完全一樣,它們就是同一種組合。

  比如:給定字符串"hart",則"ha""har"是不同的組合,而"ha""ah"是相同的組合。

 

  排列方式:不以字符串多少為排列區(qū)分,而是以是否確定某一字符來(lái)確定字符子串

  hart作為字符串,則如下:

  h        ha  har hart hat hr hrt      ht

               a  ar   art  at

                                                  r  rt

                                                                 t

 

  可以看出:第一行全有h,第二行沒(méi)有h,全是art,第三行沒(méi)有ha,全是rt,第四行沒(méi)有har,就只有t

  如果第一行去掉 h,恰好是 第二行 第三行 第四行 的全部,正好是 3個(gè)字符art的組合,

  再黏上一個(gè) h ,就成了新的組合。

  根據(jù)這樣的特點(diǎn):我們?cè)O(shè)計(jì)一個(gè)遞歸算法

  1)從首字符到尾字符的各個(gè)字符,循環(huán)

  2)輸出被循環(huán)到的字符

  3)如果循環(huán)的字符 后面還有字符,遞歸;以后面的字符為起點(diǎn),重復(fù)步驟(2)和步驟(3

  4)如果被循環(huán)到的字符后面沒(méi)有字符,跳出循環(huán)。

 

  畫(huà)圖的話,看成如下:以行為單位輸出,1表示此字符輸出

    h a r t             h a r t 

  h 1 . . .                      h 1 . . .

  a 1 1 . .    --   a 1 1 . .

  r 1 1 1 .                     r 1 1 . 1 //下一行返回后,本行往下一列進(jìn)行,后面的依次類(lèi)推

  t 1 1 1 1(return  t 1 1 1 1

                                                                    */

/************************************************************************/

 

#include <stdlib.h>

#include <stdio.h>

#include <iostream>

using namespace std;

 

int length;

char *out;

char str[]="hart";  //此法當(dāng)有重復(fù)字母時(shí),結(jié)果是錯(cuò)誤的

int sum=0;

 

void DoCombine(char in[],char out[],int length,int rec,int start)//rec看成行,

{

       int i;

       for( i = start; i < length; i++)//i看成列

       {

              out[rec] = in[i];

              out[rec+1] =0;

              printf("%s\n",out);

              if(i< length-1)

                     DoCombine(in,out,length,rec+1,i+1);

       }

}

int main(int argc, char* argv[])

{

       length = strlen(str);

       out = (char *)malloc(length +1);

       DoCombine(str,out,length,0,0);

       getchar();

       return 0;

}

 

本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶(hù)發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
用遞歸實(shí)現(xiàn)字符數(shù)組的反轉(zhuǎn)
深入解析最長(zhǎng)公共子串
KMP算法的Next數(shù)組詳解
動(dòng)態(tài)規(guī)劃常見(jiàn)實(shí)例詳解
String--常用方法列表
「算法總結(jié)」13 道題搞定 BAT 面試——字符串
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服