#include <stdio.h>
#include <string.h>
#define MAXSIZE 100
#define INVALID -1
int Stack[MAXSIZE];
void Combination(const char ch[],int nSize,int path);
int main(int argc, char* argv[])
{
int i = 0;
int len = 0;
const char* chMatrix = "1234567";
len = strlen(chMatrix);
for (i=0;i<len;++i)
{
Combination(chMatrix,len,i+1);
}
return 0;
}
void Combination(const char chMatrix[],int nSize,int path)
{
int i,j;
int begin = 0;
int top = 0;
int findit = 0;
for (i=0;i<MAXSIZE;++i)
{
Stack[i] = INVALID;
}
do
{
for (i=begin;i<(nSize-path+top+1);++i)
{
Stack[top++] = i;
if (top==path)
{
break;
}
}
if (path==top)
{
for (i=0;i<top;++i)
{
printf("%c",chMatrix[Stack[i]]);
}
printf("\n");
}
begin = Stack[--top]+1;
Stack[top] = INVALID;
} while (top!=-1);
}
自己实现的非递归组合
最新推荐文章于 2024-03-02 21:45:00 发布