#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编辑过]

 
											





 
	    


 –★–你太强了,1号注册的现在已经269贴了,佩服啊
–★–你太强了,1号注册的现在已经269贴了,佩服啊