C是否能实现数字的排列与组合.
能不能举几例子,
谢谢
没有现成的程序,给你一个全排列吧,差不多的
#include <stdio.h> #include <malloc.h> int *s,*c,k; /*s用来记录哪些数已经被用过,c放一种组合*/ void fun(int n) /*此函数是寻找没有被用过的数字放入数组c中*/ { int i; for(i=0;i<n;i++) { if(s[i]==0) /*如果该数未用过*/ { c[k++]=i+1; /*将该数放入C中*/ s[i]=1; /*设置该数为已用*/ fun(n); /*递归寻找下个数*/ s[i]=0; /*做到这一步说明已经找到一个解,回溯法寻找下个解*/ --k; } } if(k==n) /*k等于n说明找到了一个正确的解,输出*/ { for(i=0;i<n;i++)printf("%7d",c[i]); printf("\n"); } } void main() { int n; do{ printf("请输入一个整数:"); scanf("%d",&n);} while(n<0||n>32767); s=(int *)malloc(sizeof(int)*n); c=(int *)malloc(sizeof(int)*n); for(k=0;k<n;k++)s[k]=c[k]=0; k=0; fun(n); }