P1157 组合的输出 (dfs深搜)

题目连接:P1157 组合的输出 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)


思路:


AC代码:

cpp 复制代码
#include<iostream>
#include<cstring>

using namespace std;

const int N = 30;
int st[N];//用来存这个数用没用过(1~n个数) 
int n,r;

//求组合数,u表示当前到了哪个位置,start表示现在用到了1~n哪个数 
void dfs(int u,int start)
{
	//剪枝优化 
	if((u-1) + (n-start+1) < r) return;
	if(u>r) 
	{
		for(int i=1;i<=r;i++)
		{
			printf("%3d",st[i]);
		}
		puts("");//换行,比printf()快 
		return;
	}
	//从start开始保证了后一个数一定大于前一个数 
	for(int i=start;i<=n;i++)
	{
		st[u] = i;//标记 
		dfs(u+1,i+1);//向下搜索 
		st[u] = 0;//恢复现场 
	}
}

int main()
{
	cin >> n >> r;
	dfs(1,1);//刚开始从第一个位置和数字1开始 
	return 0;
}
相关推荐
Dola_Zou14 分钟前
工厂智能排产软件算法保护与按产线计费实战
算法·自动化·软件工程·软件加密
码匠许师傅1 小时前
【设计模式精讲】29.行为型模式总结与对比(Behavioral Patterns Summary)
c++·设计模式·uml
啦啦啦啦啦zzzz2 小时前
Logger的组装(c++20)
c++·算法·c++20
尾善爱看海3 小时前
前端算法与手写题集
前端·算法
繁星蓝雨3 小时前
C++的设计与演进大纲(如何从C语言一步步成长为C++)
c语言·开发语言·c++·c++历史·c++演进
程序员阿鹏3 小时前
为什么MySQL InnoDB选择B+树?
数据结构·数据库·b树·sql·mysql·算法·缓存
蒸蒸yyyyzwd4 小时前
机试学习笔记
c++·求职招聘
AI 思录4 小时前
Prompt 事故档案(八):日常表达被标为“待校准”,AI 的爹味语法从哪里来
大数据·人工智能·算法·prompt·用户体验·ai合规
月光船幽幽4 小时前
跨范式映射的稳定接口设计
人工智能·python·算法
handler015 小时前
【Linux】线程与虚拟内存的底层世界
linux·运维·服务器·c++·线程·虚拟地址空间·共享内存