c语言 打印给定字符串的所有排列?

Python026

c语言 打印给定字符串的所有排列?,第1张

#include <stdio.h>

void pern(char s[],int k)

{int i

char c

if(k==2)

 printf("%s\n",s)

else

 for(i=ki<=2i++)

 {c=s[k]s[k]=s[i]s[i]=c

  pern(s,k+1)

  c=s[k]s[k]=s[i]s[i]=c

  }

}

void print_all_permutations(char *str)

{ pern(str,0)

return

}

int main(void)

{ char str[256] = "ABC"

print_all_permutations(str)

return 0

}

N个元素中取出M个元素的所有排列

#include <stdio.h>#define MAX 10int used[MAX]int result[MAX]int M, Nvoid print() { int i for(i = 0i <Mi++) printf("%d ", result[i])printf("\n")}void Perm(int step) { int iif (step == M) print()elsefor(i = 0i <Ni++)if (!used[i]) {used[i] = 1 result[step] = i + 1 Perm(step + 1) used[i] = 0 }}main() {scanf("%d %d", &M, &N) Perm(0)}

N个元素中取出M个元素的所有组合

#include<stdio.h>#define MAX 20int c[MAX] = {0}int M, Nvoid print() {int i for(i = 0i <Mi++)printf("%d", c[i + 1]) printf("\n")}void Comp(int m) {if (m == M + 1)print() elsefor(c[m] = c[m - 1] + 1c[m] <= N - M + mc[m]++)Comp(m + 1)}void main() {scanf("%d %d", &M, &N) Comp(1)}

#include <stdio.h>

void Permutation(char*a,char*current)

int main()

{

char s[30]="abc"

Permutation(s,s)

return 0

}

void Permutation(char*a,char*current)

{

if(*current=='\0')

printf("%s\n",a)

for(char*next=current*next!='\0'next++)

{

char tem=*current

*current=*next

*next=tem

Permutation(a,current+1)

tem=*current

*current=*next

*next=tem

}

}