Posted on 2009-08-28 09:15 
reiks 阅读(209) 
评论(0)  编辑 收藏 引用  所属分类: 
算法与数据结构 
			 
			
		 
		 #include <stdio.h>
#include <stdio.h>
 #include <assert.h>
#include <assert.h>
 #include <malloc.h>
#include <malloc.h>

 void p(int n)
void p(int n)


 {
{
 extern void _p(int n, int cur, int *a);
    extern void _p(int n, int cur, int *a);
 int *a;
    int *a;
 a = (int *) malloc(n * sizeof(int));
    a = (int *) malloc(n * sizeof(int));
 assert(a != NULL);
    assert(a != NULL);
 _p(n, 0, a);
    _p(n, 0, a);
 free(a);
    free(a);
 }
}

 void _p(int n, int cur, int *a)
void _p(int n, int cur, int *a)


 {
{
 int i,j;
    int i,j;
 if (cur == n)
    if (cur == n)

 
     {
{
 for (j=0; j<cur; j++)
        for (j=0; j<cur; j++)

 
         {
{
 printf("%d ", a[j]);
            printf("%d ", a[j]);
 }
        }
 printf("\n");
        printf("\n");
 return;
        return;
 }
    }
 for (i=1; i<=n; i++)
    for (i=1; i<=n; i++)

 
     {
{
 for (j=0; j<cur; j++)
        for (j=0; j<cur; j++)

 
         {
{
 if (a[j] == i)
            if (a[j] == i)

 
             {
{
 break;
                break;
 }
            }
 }
        }
 if (j>=cur)
        if (j>=cur)

 
         {
{
 a[cur] = i;
            a[cur] = i;
 _p(n, cur+1, a);
            _p(n, cur+1, a);
 }
        }
 }
    }
 }
}

 int main()
int main()


 {
{
 p(3);
    p(3);
 }
}