深搜
枚举二进制
#include <bits/stdc++.h>
using namespace std;
int n,a[10];
void dfs(int t){
if(t==n){
for(int i=0;i<n;i++) cout << a[i];
cout << endl;
return;
}
a[t]=0;
dfs(t+1);
a[t]=1;
dfs(t+1);
}
int main(){
cin >> n;
dfs(0);
return 0;
}
输入
3
输出
000
001
010
011
100
101
110
111
枚举数的全排列
#include <bits/stdc++.h>
using namespace std;
int n,a[10],b[10];
void dfs(int t){
if(t==n){
for(int i=0;i<n;i++) cout << a[i];
cout << endl;
return;
}
for(int i=1;i<=n;i++){
if(b[i]==0){
a[t]=i;
b[i]=1;
dfs(t+1);
b[i]=0;
}
}
}
int main(){
cin >> n;
dfs(0);
return 0;
}
输入
3
输出
123
132
213
231
312
321
NOIP2002 普及组 选数
#include <bits/stdc++.h>
using namespace std;
const int N=25;
int n,k,a[N],b[N],ans,s;
bool p(int x){
if(x<2) return 0;
for(int i=2;i*i<=x;i++){
if(x%i==0) return 0;
}
return 1;
}
void dfs(int t, int m){
if(t==n){
if(k==m){
s=0;
for(int i=0;i<n;i++){
if(b[i]) s+=a[i];
}
if(p(s)) ans++;
}
return;
}
b[t]=0;
dfs(t+1, m);
b[t]=1;
dfs(t+1, m+1);
}
int main(){
cin >> n >> k;
for(int i=0;i<n;i++){
cin >> a[i];
}
dfs(0, 0);
cout << ans;
return 0;
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统
· 【译】Visual Studio 中新的强大生产力特性
· 2025年我用 Compose 写了一个 Todo App