Étant donné une chaîne et un nombre, cette fonction produira toutes les combinaisons possibles de n lettres de cette chaîne.Pourquoi ce code ne produit-il pas la sortie correcte?
-à-dire si je passe "ABCD" et 3, alors je devrais obtenir la sortie suivante:
abc
abd
acd
bcd
Voici le code
- (void)viewDidLoad {
[super viewDidLoad];
[self expand_combinations:@"abcd" arg2:@"" arg3:3];
}
-(void) expand_combinations: (NSString *) remaining_string arg2:(NSString *)s arg3:(int) remain_depth
{
if(remain_depth==0)
{
printf("%s\n",[s UTF8String]);
return;
}
for(int k=0; k < [remaining_string length]; ++k)
{
s = [s stringByAppendingString:[[remaining_string substringFromIndex:k] substringToIndex:1]];
[self expand_combinations:[remaining_string substringFromIndex:k+1] arg2:s arg3:remain_depth - 1];
}
return;
}
c'est lieu ce qu'il imprime
abc
abcd
abcd
abcd
Quelle est la chaîne restante d'origine? abc? –
Oui, il est passé à la fonction dans la méthode viewDidLoad. –
@awake Je ne peux pas croire que vous ayez demandé à votre dernière douzaine de questions de trouver une fonction de permutation en Objective-C. – NullUserException