
风回小院庭芜绿,柳眼春相续
2015-04-07 10:00
程序代码:
#include <stdio.h>
#include <stdlib.h>
void prt_num(int *num, int n) {
int i;
for(i = 0; i < n; i++)
if(num[i]) putchar(i + 'a');
printf(" ");
}
int check(int *num, int n, int m) {
int i, flag = 0;
for(i = 0; i < n - m; i++)
if(num[i]) flag = 1;
return flag;
}
void comb_num(int *num, int n, int m) {
int i, j, count;
prt_num(num, n);
for(;;) {
count = 0;
for(i = 0; i < n - 1; i++) {
if(num[i] == 1 && num[i + 1] == 0) {
num[i] = 0;
num[i + 1] = 1;
break;
}
if(num[i]) count++;
}
for(j = 0; j < i; j++) {
if(j < count) num[j] = 1;
else num[j] = 0;
}
prt_num(num, n);
if(!check(num, n, m)) break;
}
}
int main(void) {
int n, m, *num, i;
if((scanf("%d %d", &n, &m)) != 2 || m <= 0 || n <= m) return 1;
if(!(num = malloc(sizeof(int) * n))) return 1;
for(i = 0; i < n; i++) {
if(i < m) num[i] = 1;
else num[i] = 0;
}
comb_num(num, n, m);
puts("");
return 0;
}

2015-04-07 10:31
2015-04-07 11:08
程序代码:#include <stdio.h>
#include <string.h>
#include <stdlib.h>
void comb(char *s, int n, int m) {
int i, j, k, t;
int total = 1 << n;
char **new = NULL;
if(!(new = malloc(total * sizeof(char*)))) exit(EXIT_FAILURE);
for(i = 0; i < total; i++)
if(!(new[i] = calloc(n + 1, sizeof(char)))) exit(EXIT_FAILURE);
if(n == 0) return;
for(i = 1; i < total; i++) {
for(k = 0, j = 0; j < n; j++) {
t = i;
if(t & (1 << j)) {
new[i][k++] = *(s + j);
}
}
}
for(i = 1; i < total; i++)
if(strlen(new[i]) == m)
printf("%s\t", new[i]);
for(i = 0; i < total; i++)
free(new[i]);
free(new);
}
int main(void) {
char s[] = "12345";
int n = strlen(s), m = 3;
comb(s, n, m);
return 0;
}

2015-04-07 14:37

2015-04-07 14:56
2015-04-07 15:45

2015-04-07 15:52
程序代码:
#include <stdio.h>
#include <string.h>
#define N 3
#define M 5
int combination[N+1] = {0};
void recursion(int m, int depth);
int main(void)
{
recursion(1, 1);
getchar();
return 0;
}
void recursion(int m, int depth)
{
int i, j, k;
for (i = m; i <= M; i++)
{
combination[depth] = i;
if (depth == N)
{
for (j = 1; j <= N; j++)
{
printf("%d ", combination[j]);
}
printf("\n");
}
else
{
recursion(i+1, depth+1);
}
}
}
2015-04-16 12:10
2015-04-16 12:13
2015-04-16 12:52