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;
}
相关推荐
lifallen5 小时前
Hadoop MapReduce 任务/输入数据 分片 InputSplit 解析
大数据·数据结构·hadoop·分布式·算法
熙xi.6 小时前
数据结构 -- 哈希表和内核链表
数据结构·算法·散列表
Ghost-Face6 小时前
并查集提高——种类并查集(反集)
算法
董董灿是个攻城狮7 小时前
5分钟搞懂大模型微调的原始能力退化问题
算法
Incredibuild7 小时前
DevSecOps 集成 CI/CD Pipeline:实用指南
c++·ci/cd·devsecops
君鼎10 小时前
More Effective C++ 条款01:仔细区别 pointers 和 references
c++
艾醒10 小时前
大模型面试题剖析:大模型微调与训练硬件成本计算
人工智能·后端·算法
啊嘞嘞?11 小时前
力扣(滑动窗口最大值)
算法·leetcode·职场和发展
快递鸟11 小时前
ISV系统开发中物流接口的第三方模块对接:技术选型与集成实践
算法