/***
* 引用:http://data.biancheng.net/view/34.html
* 對字元串 “ABC” 所有子集的列舉(使用回溯法-這裡實際上是二叉樹的深度優先周遊)
*從集合的開頭元素開始,對每個元素都有兩種選擇:取還是舍。當确定了一個元素的取舍之後,
再進行下一個元素,直到集合最後一個元素。其中的每個操作都可以看作是一次嘗試,
每次嘗試都可以得出一個結果。将得到的結果綜合起來,就是集合的所有子集。
*
*/
void allPermutation(char* str,NSString* buffer){
if (*str == '\0') {
NSLog(@"buffer:%@",buffer);
}else{
allPermutation(str + 1,[buffer stringByAppendingFormat:@"%c",str[0]]);
allPermutation(str + 1,buffer);
}
}
int main(int argc, const char * argv[]) {
char *str = "ABC";
NSString* buffer = @"";
allPermutation(str,buffer);
return 0;
}
字元串“123”對每一個元素'取'or'舍',建構二叉樹的過程:
