#include <stdio.h>
#include <string.h>
#define MAXSIZE 100
#define INVALID -1
int Stack[MAXSIZE];
int main(int argc, char* argv[])
{
int i = 0;
int j = 0;
int len = 0;
int curIndex = 0;
int findit = 0;
int begin = 0;
const char* chMatrix = "123456789";
len = strlen(chMatrix);
for (i=0;i<MAXSIZE;++i)
{
Stack[i] = INVALID;
}
do
{
for (i=begin;i<len;++i)
{
findit = 0;
if (curIndex==0)
{
findit = 0;
}
else
{
for (j=0;j<curIndex;++j)
{
if (Stack[j]==i)
{
findit = 1;
break;
}
}
}
if (!findit)
{
Stack[curIndex++]=i;
begin = 0;
break;
}
}
if (i==len)
{
if (curIndex==len) //表示已经到最后一个元素了
{
for (i=0;i<curIndex;++i)
{
printf("%c",chMatrix[Stack[i]]);
}
printf("\n");
}
begin = Stack[--curIndex]+1;
Stack[curIndex] = INVALID;
}
} while (curIndex!=-1);
return 0;
}
全排列的非递归实现
最新推荐文章于 2022-11-20 09:33:03 发布