遞歸-1

//

//ViewController.m

//CocoTest_1

//

//Created by S u p e r m a n on 2017/3/14.

//Copyright ? 2017年張浩. All rights reserved.

//

#import"ViewController.h"

intfirstCount =0;

intinputNum[3] = {0};

@interfaceViewController()

@end

@implementationViewController

- (void)viewDidLoad {

[superviewDidLoad];

// Do any additional setup after loading the view, typically from a nib.

//1.

[selftest1];

}

/**

【程序1】

題目:有1、2、3、4個數字,能組成多少個互不相同且無重復數字的三位數?都是多少?

*/

- (void)test1 {

intnum[4] = {1,2,3,4};

getThreeNum(0, num);

}

// index從0開始

voidgetThreeNum(intindex,int*num){

if(index ==3) {

printf("第%d個:", ++firstCount);

for(inti =0; i<3; i++) {

printf("%d",inputNum[i]);

}

printf("\n");

}else{

for(inti =1; i<=4; i++) {

//index以后的數據要清空

for(intk = index; k<3; k++) {

inputNum[k] =0;

}

//判斷下個書籍是否可以加入,index以前的來判斷

BOOLisCanJoinNum =YES;

//當前的將要放入的值在tempNum是存在的

for(intk =0; k

if(i ==inputNum[k]) {

isCanJoinNum =NO;

break;

}

}

if(isCanJoinNum) {

inputNum[index] = i;

getThreeNum(index+1, num);

}else{

continue;

}

}

}

}

@end

//更加簡單的辦法

- (void)viewDidLoad {

[superviewDidLoad];

// Do any additional setup after loading the view, typically from a nib.

intmap[5] = {0};

intsave[4] = {0};

test1(0,map,save);

}

/**

【程序1】

題目:有1、2、3、4個數字,能組成多少個互不相同且無重復數字的三位數?都是多少?

可以理解成3個桶A,B,C

在A桶的時候可以順序的放入1,2,3,4

在B桶中只能放入不在A桶的數(需要用一個Map數組來標記是否訪問過的)

在C桶中也是一樣的

*/

voidtest1(intstep,int* map,int* save) {

if(step ==3) {

for(inti =0; i <3; i ++) {

printf("%d",save[i]);

}

printf("\n");

return;

}

for(inti =1; i <=4; i ++) {//1,2,3,4

if(map[i] ==0) {

map[i] =1;//標記當前的i已經被用了不能再用了

save[step] = i;

test1(step+1,map,save);

//把當前的i解除占用,這樣在第二步的時候還是可以用這個i

map[i] =0;

}

}

}

@end

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 背景 一年多以前我在知乎上答了有關LeetCode的問題, 分享了一些自己做題目的經驗。 張土汪:刷leetcod...
    土汪閱讀 12,771評論 0 33
  • 本系列博客習題來自《算法(第四版)》,算是本人的讀書筆記,如果有人在讀這本書的,歡迎大家多多交流。為了方便討論,本...
    kyson老師閱讀 3,812評論 18 52
  • ?才畢業的開發小白,最近在使用node、php和vue,有興趣的小伙伴可以加群 134246716,大家一起學習,...
    偏偏注定要落腳丶閱讀 1,133評論 8 8
  • 1. Java基礎部分 基礎部分的順序:基本語法,類相關的語法,內部類的語法,繼承相關的語法,異常的語法,線程的語...
    子非魚_t_閱讀 31,765評論 18 399
  • 今天沒有任何寫作靈感,沒有新鮮的故事,沒有心靈感悟,所以憋到現在也寫不出文字來,可是,如果今天間斷了,明天又會間斷...
    AMy119閱讀 243評論 0 0