f**e 发帖数: 32 | | s********s 发帖数: 4011 | 2 void permutate(char *data, int l, int u, char *result, int len){
if( l>u ){
cout<
}else{
int t = 0;
while(t
if( !result[t] ) {
result[t] = data[l];
permutate(data, l+1, u, result, len);
result[t] = 0;
}
t++;
}
}
} | d*******y 发帖数: 75 | 3 void permutation(char* part1, char* part2)
{
int i, j = 0, k = 0;
int size = 0;
if ( strlen(part2) == 1 ) {
printf("%s%s\n", part1, part2);
} else {
char tmppart1[4] = {0};
char tmppart2[4] = {0};
for ( i = 0; i < strlen(part2); i++ )
{
j = 0;
k = 0;
strcpy(tmppart1, part1);
tmppart1[3-strlen(part2)] = part2[i];
while( j < strlen(part2) )
{
| i*c 发帖数: 1132 | 4 I found this elegant code using string.
string swtch(string topermute, int x, int y)
{
string newstring = topermute;
newstring[x] = newstring[y];
newstring[y] = topermute[x]; //avoids temp variable
return newstring;
}
void permute(string topermute, int place)
{
if(place == topermute.length() - 1)
{
cout<
}
for(int nextchar = place; nextchar <
topermute.length(); nextchar++)
{
permute(swtch(topermute, place, nextchar),
|
|