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;
}
相关推荐
盘古开天16666 分钟前
PPO算法代码实战(三):PyTorch从零实现PPO求解CartPole
人工智能·pytorch·算法
yyy(十一月限定版)7 分钟前
CF2138A Cake Assignment
算法
宵时待雨14 分钟前
linux笔记归纳25:多路转接epoll
linux·服务器·网络·c++
Frank_refuel27 分钟前
【C++项目】手撕JRpc框架(单机怎么优化到分布式思想)
开发语言·c++
盘古开天166628 分钟前
PPO算法原理详解(下):Clip机制深入剖析与实践指南
人工智能·算法·机器学习
ShineWinsu36 分钟前
对于Redis:Hash类型的解析
c++·redis·分布式·缓存·面试·hash·哈希表
wuminyu40 分钟前
JEP491中synchronized关键字引发的平台线程钉住解决方法简介
java·linux·c语言·jvm·c++
All for pursuit.1 小时前
【贪心-4】581.最短无序连续子数组
数据结构·c++·算法·leetcode
weixin_307779131 小时前
从“人操作仪器”到“Agent 自主发现”:OPL 金属材料自驱动实验室 MVP 技术论述
开发语言·人工智能·算法·架构
释厄6231 小时前
01AB 基本元理——任何智能体的三元法理·0=1→0≠1法理跃迁为天理
人工智能·windows·算法·microsoft·机器学习