나는이 문제를 해결할 방법을 정말로 생각하지 못하고, 어떤 이유로 든 주위에 두뇌를 갖출 수 없습니다. 내가 해결하려고하는 문제는 다음과 같습니다.객관적인 C - 중복의 순열 계산
퍼즐 해법 유형 알고리즘의 경우 NSString의 하위 문자열로 중복 문자를 가져옵니다. 사용자가 "RBEEEIOOUUU"를 입력했다고 가정 해 봅시다. 문자열에서 중복 된 문자열을 가져 와서 중복 문자열의 가능한 모든 조합을 볼 수 있습니다. 반복 횟수를 변경하면됩니다. (for 이 문제의 위치는 내가 나중에 알파벳순, 중요하지 않습니다 ..) 그래서
, 문자열 EEEOOUUU 주어진 을 나는 본질적으로 변화하는 중복 기반으로, 문자열의 가능한 모든 조합의 집합을 도출 할
이 예에서는 3 이하의 E, 2 이하의 O 및 3 이하의 U를 갖는 모든 가능한 문자열을 제공합니다.
그래서, 그냥 내 머리 위로 떨어져, 나는
EEEOOUUU (소스 문자열) EEEOUUU EEEOOUU을 반환 할 것 EEEOOU
EEOOUUU EEOUUU EEOOUUU EEOUU EEOU EOOUUU ....... 등등 ...
재귀는 어떤 이유로이 하나를 소유하고 있습니다. 솔루션을 시각화합니다. 고정 길이의 글자를 순열하기위한 알고리즘을 가지고 있지만 여기서는 도움이되지 않거나 최소한 가난한 수면을 취하지 않은 두뇌는 적용 할 수 없습니다. 여기에 대화의 주제를
관대 제공하게 기꺼이 할 수 있습니다 기분이 어떤 도움이나 제안 사람이, 내가 당신에게 빚을 수 있습니다 ..
은 아마 모두 폐기 할 수 있다는 것을 나는 그냥 해킹 나쁜 일이다 어떤 것 대신에 .... 물론 이것은 나중에 내가 속은 사람 등을 돌려주기 위해 나중에 부름을 줄 것이라고 가정한다. 이것을 배열의 사용으로 오싹하게 여기지는 않겠지 만, 엔트리 용어의 무리.//probably the most inefficent way of doign this, sorry for my level of fail.
-(NSMutableArray*) getDuplicatePermutations:(NSMutableArray*)workingArray workingWord:(NSMutableString*)workingWord currentLetter:(NSString*)currentLetter{
NSArray *dupeArray = [self getDuplicateLetters]; //this returns only the letters with an occurrence >1 so in EEEIIOOOT, it returns "E", I", "O"
if (workingWord==nil){workingWord = [[NSMutableString alloc] init];
for (NSString *thisLetter in dupeArray)
{
for (NSString* thisLetterStuff in [self possibleDupePermutationsForLetter:thisLetter theWord:self]){ ////this thing returns NSArray of NSStrings like so "EEE","EE", "E"
workingWord = [workingWord stringByAppendingString:thisLetterStuff];
if ([thisLetter isEqualToString:[dupeArray lastObject]]) { ///do... something.. at the lowest depth...
[workingArray addObject:workingWord];
workingWord = @"";
}
workingArray = [self getDuplicatePermutations:workingArray workingWord:workingWord currentLetter:thisLetter]; //I can haz recursion? No idea where to do it,actually.
}
}
}
return workingArray; ///ostensibly an array filled with crap the looping mess builds
}
다른 방식으로 생각하면 도움이된다면. 가변 바퀴 수와 바퀴 당 가변 수의 문자를 가진 간단한 케이스 스타일 조합 자물쇠를 고려하십시오. 어떻게 하나의 재귀를 사용하여 가능한 모든 조합의 목록을 작성할 수 있습니까? (Objc에서) 따라서 최대 3 개, 최대 2 개, 최대 4 개, 최대 3 개 가능한 모든 조합의지도가있는 경우 : 3 , 2,4,3 2,2,4,3 1,2,4,3 ...... 모든 조합에 대해 ... 반복 가이드로 그 "조합 맵"을 사용할 수 있습니다. 반복적 인 단어 콤보를 작성하십시오. –