Synes da lige jeg vil komme med mit foreslag, den nederste function er ikke nødvendig det er bare eksempel på brug, minder meget om bertels.
ved all boolean true returneres alle mulige kombinationer man kan danne hvis man ikke skal tage alle, ellers kun de mulige med alle valgte.
#include <string>
#include <list>
void FindWords(std::string chars,std::list<std::string> &words,std::string word="",bool all=false){
if(chars.size()==1){
word.push_back(chars[0]);
words.push_back(word);
return;
}
for(unsigned int i=0;i<chars.size();i++){
char b=chars[0];
std::string word2=word+b;
chars.erase(0,1);
FindWords(chars,words,word2,all);
chars.push_back(b);
if(all){
words.push_back(word2);
}
}
}
int main(){
std::string chars="xvfs";
std::list<std::string> words;
FindWords(chars,words,"",true);
for(std::list<std::string>::iterator b=words.begin();b!=words.end();++b){
std::cout<<*b<<std::endl;
}
}
har lidt svært ved at se hvordan din egen løsning løser det du bad om.
Indlæg senest redigeret d. 31.12.2008 17:18 af Bruger #5620