65,210
社区成员
发帖
与我相关
我的任务
分享#include <stdio.h>
#include <stdlib.h>
#define MAX_NUM 26
int comb[MAX_NUM];
int c1,c2;
void combination(int m, int n)
{
int i, j;
for (i = m; i >= n; i--){
comb[n] = i; /* 选择当前的“头”元素 */
if (n > 1){
/* 进入下一次更小的组合问题 */
combination(i - 1, n - 1);
}else{
/* 满了需要的组合数,输出 */
for (j = comb[0]; j > 0; j--){
printf("%c", 65+c1-comb[j]);
}
printf("\n");
}
}
return;
}
int main(int argc, char *argv[])
{
if (argc<3) {
printf("%s 组合下标 组合上标\n",argv[0]);
return 0;
}
c1=atoi(argv[1]);
if (c1<1||26<c1) {
printf("1<=组合下标<=26\n");
return 0;
}
c2=atoi(argv[2]);
if (c2<1||c1<c2) {
printf("1<=组合上标<=组合下标\n");
return 0;
}
comb[0]=c2;
combination(c1, c2); /* C(4, 2) */
return 0;
}
#include <stdio.h>
#include <vector>
#include <algorithm>
using namespace std;
int i;
int L;
void main(int argc,char **argv) {
if (argc<2) {
printf("%s 要排列的字符串\n",argv[0]);
return;
}
L=strlen(argv[1]);
vector<char> P(L);
vector<char>::iterator b,e,it;
b=P.begin();
e=P.end();
for (i=0;i<L;i++) P[i]=argv[1][i];
sort(b,e);
i=0;
do {
printf("%10d: ",++i);
for(it=b;it!=e;it++) printf("%c",*it);
printf("\n");
} while (next_permutation(b,e));
printf("The total: %d",i);
}