啊哈算法-不撞南墙不回头-深度优先搜索

配合for循环和递归进行搜索 深度优先搜索侧重于将当下如何做,然后利用递归不断进行“当下”,直到基准情况返回。

下面代码 输入一个数字(1-9)输出 123...n的全排列

#include<stdio.h>
void put(int n);
int num,a[10],book[10],count=0;
int main(){
    scanf("%d",&num);
    put(1);
    return 0;
}
void put(int n){
    if(n==num+1){
        for(int i=1;i<=num;i++) printf("%d",a[i]);
        count++;
        printf(" "); 
        if(count%5==0) printf("\n");
        return ;
    }
    else{
        for(int i=1;i<=num;i++){
            if(book[i]==0){
                a[n]=i;
                book[i]=1;
                put(n+1);
                book[i]=0;
            }
        }
    }
}

 

posted @ 2021-12-16 17:01  m2on  阅读(20)  评论(0编辑  收藏  举报