【模板】搜索

来源:互联网 发布:淘宝详情页模板视频 编辑:程序博客网 时间:2024/05/17 02:06

全排列:

#include<iostream>#include<cstdio>using namespace std;int n,num[12];bool vis[12];void dfs(int x) {    if (x == n)    {        for(int i = 1; i <= n; i ++)        printf("%d ",num[i]);        printf("\n");         return;    }    for(int i = 1; i <= n ; i ++)    {        if(!vis[i])        {            vis[i] = 1;            num[x + 1] = i;            dfs(x + 1);            vis[i] = 0;        }    }}int main(){    scanf("%d",&n);    dfs(0);    return 0;}

子集枚举:

#include<iostream>#include<cstdio>#include<cstring>using namespace std;int n,a[20];bool vis[20];void dfs(int x){    if(x > n)    {        for(int i = 1; i <= n; i ++)        if(vis[i] == 1)         printf("%d",a[i]);         cout<<endl;        return;    }     for(int i = 0; i <= 1; i ++ )    {        vis[x] = i;        dfs(x + 1);        vis[x] = 0;    }}int main(){    scanf("%d",&n);    for(int i = 1; i <= n; i ++)        scanf("%d",&a[i]);    dfs(1);    return 0;}
0 0
原创粉丝点击