经典深搜题目,水题
注意题目要求的输出,最后一组数据输出后不用再输出空行
http://acm.hdu.edu.cn/showproblem.php?pid=1342
#include <iostream>
#include <stdio.h>
#include <algorithm>
using namespace std;
int s[15],k,a[15];
bool used[15];
void dfs(int num,int x){ //num记录第几个数 ,x记录扫描到s数组的当前位置
if (x==k && num<6) return;
if (num==6) {
for (int i=1;i<6;i++) printf("%d ",a[i]);
printf("%d\n",a[6]);
return;
}
for (int i=x+1;i<=k;i++){
a[num+1]=s[i];
dfs(num+1,i);
}
}
int main(){
cin>>k;
while (1){
for (int i=1;i<=k;i++){
scanf("%d",&s[i]);
}
for (int i=1;i<=k-5;i++) {
a[1]=s[i];
dfs(1,i);
}
cin>>k;
if (k!=0) printf("\n");
else break;
}
return 0;
}
深搜经典题目解析
本文介绍了一道经典的深度优先搜索(DFS)算法题目,并提供了完整的C++代码实现。该题目要求从给定的一系列整数中找出所有可能的六元组合,并按照特定规则输出。文章代码实现了DFS算法来寻找所有可能的组合。
2504

被折叠的 条评论
为什么被折叠?



