全排列和组合数区分

全排列传送门
组合数传送门

共同点:

  • 都是dfs深搜
  • 区别点在于组合数要去重 在dfs函数中加一个条件参数
cpp 复制代码
bool num[23];//判断重复数组
int ans[23];//返回结果数组
//组合数给定参数n和长度k的组合'
int k,n;
dfs(int deep,int last)
{
	if(deep>k){
		for(int i=1;i<=k;i++) cout<<res<<" ";
		cout<<endl;
		return;
	}
	for(int i=1;i<=n;i++){
		if(num[i]==false&&i>last){//全排列是没有i>last的
			num[i]=true;
			ans[deep]=i;//存值
			dfs(deep+1,i);
			num[i]]=false;//回溯
		}
	}
}
int main(
{	
cin>>n>>k;
dfs(1,0);
return 0;
}
相关推荐
weixin_3954489111 分钟前
main.c_cursor_0129
前端·网络·算法
CS创新实验室24 分钟前
《计算机网络》深入学:路由算法与路径选择
网络·计算机网络·算法
一条大祥脚24 分钟前
ABC357 基环树dp|懒标记线段树
数据结构·算法·图论
tod11324 分钟前
力扣高频 SQL 50 题阶段总结(四)
开发语言·数据库·sql·算法·leetcode
naruto_lnq35 分钟前
C++中的桥接模式
开发语言·c++·算法
苦藤新鸡35 分钟前
50.腐烂的橘子
数据结构·算法
想进个大厂41 分钟前
代码随想录day32 动态规划01
算法·动态规划
j445566111 小时前
C++中的职责链模式高级应用
开发语言·c++·算法
uesowys1 小时前
Apache Spark算法开发指导-Decision tree classifier
算法·决策树·spark
池央1 小时前
贪心算法-最大数
算法·贪心算法