#include <stdio.h>
#ifndef MAXN
#define MAXN 100
#endif
//int n = 5, r = 3;/* P(n,r) */
//int n, r;
int used[MAXN]; /* 待排列数据使用标记 */
int p[MAXN]; /* 解空间 - 保存每次形成的排列结果 */
int data[MAXN]; /* 待排列组合的数据空间 */
int a[100];
void permute(int pos, int r, int n) /* pos是用来标记位置的 */
{
for (int j=0; j<n; j++)
{
data[j]=j;
}
int i = 0;
if (pos != r)
{
for (i=0; i<n; i++)
{
if (!used[i])
{
used[i]++;
p[pos] =data[i];
permute(pos+1,r,n);
used[i]--;
}
}
}
else//if (pos == r)
{
for (i=0;i<r;i++)
if (p[0]==0)
printf("%d, ",p[i]);
printf("\n");
return;
}
}
void main( )
{
permute(0,3,5);
}
这是一个全排列的问题 小弟不知道如何在此程序里面得到输出结果中的一个
因为输出的结果 总是后一个数组覆盖前面的一个数组
应该是可以用指针实现 可是小弟指针不太懂! 拜托各位了!
急!
[此贴子已经被作者于2006-5-11 15:47:42编辑过]