Reiks的技术博客

C/C++/STL/Algorithm/D3D
posts - 17, comments - 2, trackbacks - 0, articles - 0
  C++博客 :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理

全排列

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

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


void _p(int n, int cur, int *a)
{
    
int i,j;
    
if (cur == n)
    
{
        
for (j=0; j<cur; j++)
        
{
            printf(
"%d ", a[j]);
        }

        printf(
"\n");
        
return;
    }

    
for (i=1; i<=n; i++)
    
{
        
for (j=0; j<cur; j++)
        
{
            
if (a[j] == i)
            
{
                
break;
            }

        }

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

    }

}


int main()
{
    p(
3);
}

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   博问   Chat2DB   管理