#include <stdio.h>
char* str[] =
{
"abc", "de", "f", "gh"
};
void show(char* result, int curr)
{
if (curr == 4) puts(result);
else
{
int i;
for (i = 0; str[curr][i]; ++i)
{
result[curr] = str[curr][i];
show(result, curr+1);
}
}
}
int main()
{
char result[16] = {0};
show(result, 0);
return 0;
}
#include <stdio.h>
char *array[] = {"ab","1","24","3",NULL};
char stack[1000];
char top = -1;
void print_array(char **array){
char *curr = *array;
if(curr == NULL){
printf("%s/n",stack);
return;
}
top++;
while(*curr){
/*printf("%c",*curr);*/
stack[top] = *curr;
print_array(array+1);
stack[top] = '/0';
curr++;
}
top--;
}
int main(){
print_array(array);
getch();
return 0;
}
#include <stdio.h>
void p(char **s, int n)
{
int sk[100], t=0, i;
while (t >= 0) {
if (t == n) {
for (i=0; i<n; i++)
putchar(s[i][sk[i]]);
putchar('/n');
t--;
while (t>=0 && !s[t][sk[t]+1])
t--;
if (t>=0)
sk[t++]++;
} else
sk[t++]=0;
}
}
int main()
{
char *s[]={"ab", "cd", "gh"};
p(s, 3);
}
寻找从N个数组中各取1个元素的全部组合
#include <stdio.h>
int r[16] = {0};
void sumit(int n[][5], int sum,int cur,int col,int row)//sum是和的值,curr是当前数组,col和row是二维数组的行和列
{
if (cur == row)
{
if(r[cur]==sum)
{
for(int j=0;j<row;j++)
printf("%-4d",r[j]);
printf("/n");
}
}
else
{
int i;
for (i = 0; i<col; ++i)
{
r[cur] = n[cur][i];
sumit(n, sum-r[cur],cur+1,col,row);
}
}
}
int main()
{
int n[3][5]={{1,2,3,4,5},{6,7,8,9,10},{11,12,13,14,15}};
sumit(n,23, 0,5,3);
getchar();
return 0;
}