(蓝桥)递归与递推

1、对于  scanf  printf 和 cin cout 按照10^5来划分使用

 递归实现指数型枚举

 https://www.acwing.com/problem/content/94/

 

复制代码
#include <iostream>
#include<cstring>
#include<cstdio>
#include<algorithm>
using namespace std;
const int N=17;
int n;int a[N];
void f(int u){//进行选择  0默认 1选择 2不选择
    if(u>n){
        for(int i=1;i<=n;i++){
            if(a[i]==1) cout<<i<<" ";
        }
        cout<<endl;
        return;//不要忘记返回
    }
    a[u]=1;
    f(u+1);
    a[u]=0;//递归后复原
    
    a[u]=2;
    f(u+1);
    a[u]=0;//递归后复原
}
int main()
{
    cin>>n;
    f(1);
    return 0;
}
复制代码

94. 递归实现排列型枚举

https://www.acwing.com/problem/content/96/

复制代码
#include<iostream>
#include<cstring>
#include<cstdio>
#include<algorithm>
using namespace std;
const int N=10;
int n;int st[N];
int p[N];
void dfs(int u){
    if(u>n){
        for(int i=1;i<=n;i++) cout<<p[i]<<" ";
        cout<<endl;
        return;
    }
    for(int i=1;i<=n;i++)
    {//遍历每个数字进行判断
        if(!st[i]){
            st[i]=1;
            p[u]=i;//将数字记录在该层
            dfs(u+1);
            st[i]=0;//还原
            p[u]=0;
        }
    }
}
int main()
{
    cin>>n;
    dfs(1);
    return 0;
 } 
复制代码

 

posted @   敲代码的6  阅读(4)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~
点击右上角即可分享
微信分享提示