1. 程式人生 > >【算法】深度優先搜索

【算法】深度優先搜索

bool 排列問題 == for true pre data str clu

深度優先搜索(DFS)是一種極其經典的算法,最好的理解例子是全排列問題。

現有數字 1~5,對他們進行全排列,共有幾種排法?

#include<stdio.h>
int data[5]={1,2,3,4,5};
int perm[5]={0};
bool book[5]={false};

void dfs(int step)
{
    int i;
    if(step==5)
    {
        for(i=0;i<5;i++)
        {
            printf("%d ",perm[i]);
        }
        printf("\n");
        return;
    }
    for(i=0;i<5;i++)
    {
        if(!book[i])
        {
            book[i]=true;
            perm[step]=data[i];
            dfs(step+1);
            book[i]=false;
        }
    }
    return;
}
int main()
{
    dfs(0);
    
    
     
    return 0;
}

【算法】深度優先搜索