69,371
社区成员
发帖
与我相关
我的任务
分享
void permutation(char s[], char u[], char o[], int n, int m, int p)
{
int i;
if ( p == m ) /*达到所选则的数目*/
{
for ( i = 0; i < m; i++ )
printf("%c",o[i]);
printf("\n");
}
else
{
for ( i = 0; i < n; i++ )
{
if ( u[i]!=m ) /*如当前元素为达到使用次数即m次*/
{
u[i] += 1; o[p] = s[i];
permutation(s,u,o,n,m,p+1);
u[i] -= 1;
}
}
}
}
int main()
{
char s[] = "ABCDE";/*原集合数据*/
char o[5]; /*用于输出的*/
char u[5] = {0}; /*用来标记当前元素所使用的次数*/
permutation(s,u,o,4,3,0);/*以4取3的排列为例*/
system("PAUSE");
return 0;
}
void out(char* data, int len, char * buff, int curr)
{
if (curr == len)
{
buff[curr]=0;
printf(buff);
}
else
{
for (int i = 0; i < 10; ++i)
{
buff[curr] = data[i];
out(data, len, buff, curr+1);
}
}
}