#include<stdio.h> #include<vector> using namespace std; void dispasolution(vector<int>path) { printf("{"); for(int i=0;i<path.size();i++) printf("%d",path[i]); printf("}"); } void dfs(int a[],int n,int i,vector<int>path) { if(i>=n) dispasolution(path); else { dfs(a,n,i+1,path); path.push_back(a[i]); dfs(a,n,i+1,path); } } void main() { int a[]={1,20,30}; int n=sizeof(a)/sizeof(a[0]); vector<int>path; printf("结果为\n"); dfs(a,n,0,path); printf("\n"); }
时间: 2024-01-28 16:05:13 浏览: 69
C标准库函数集
5星 · 资源好评率100%
这段代码实现了一个深度优先搜索(DFS)算法,用于求解给定数组中所有元素的组合。具体来说,它会遍历数组中的每一个元素,对于每个元素,都有两种情况:选中或不选中。当遍历到最后一个元素时,就输出已选中的元素,即为一个组合。最终,它会输出所有的组合。
在这段代码中,dispasolution() 函数用于输出组合,dfs() 函数用于实现 DFS 算法,main() 函数则是程序的入口。其中,a 数组是给定的数组,n 是数组的长度,path 是当前已选中的元素的列表。
这段代码有一个小错误,main() 函数应该返回 int 而不是 void。正确的代码应该是:
```c++
int main() {
int a[] = {1, 20, 30};
int n = sizeof(a) / sizeof(a[0]);
vector<int> path;
printf("结果为\n");
dfs(a, n, 0, path);
printf("\n");
return 0;
}
```
阅读全文