Created
April 3, 2012 06:04
-
-
Save shihongzhi/2289669 to your computer and use it in GitHub Desktop.
Combination
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#include <stdio.h> | |
#include <string.h> | |
//排列,用的是非递归方法,即2进制方法 | |
char letter[] = "abcdefg"; | |
int main() | |
{ | |
int number = 1<<7; | |
int index, cur; | |
for (int i=1; i<number; ++i) | |
{ | |
char tmp[] =""; | |
index = 0; | |
cur = i; | |
while (cur) | |
{ | |
if (cur&1) | |
{ | |
strncat(tmp, &letter[index], 1); | |
} | |
index++; | |
cur = cur>>1; | |
} | |
printf("%s\n", tmp); | |
} | |
return 0; | |
} |
Author
shihongzhi
commented
Apr 3, 2012
//usage:
//char letter[] = "abc";
//Arrange(letter, letter);
void Arrange(char *str, char *start)
{
if (!*start)
{
printf("%s\n", str);
return;
}
for (char *i=start; (*i)!='\0'; i++) //基本思想是
{
char tmp = *start;
*start = *i;
*i = tmp;
Arrange(str, start+1);
tmp = *start;
*start = *i;
*i = tmp;
}
}
void Arrange(char *str)
{
Arrange(str, str);
}
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment