数的划分--dfs+剪枝

P1025 [NOIP 2001 提高组] 数的划分 - 洛谷

cpp 复制代码
#include<bits/stdc++.h>
using namespace std;
#define N 100011
typedef  long long ll;
typedef pair<int,int> pii;
int a[7];
int n,k;
ll an;
void dfs(int s,int c)
{
	if(c==k)
	{
		if(s==0)///符合条件的 
		{
			an++;///直接+1就行,答案不会重复,因为是按递增写的 
		}else return;
	}
	if(c>k) return;///剪枝1 
	if(s<k-c) return;///剪枝2,说明后面不够1了 
	for(int i=max(a[c],1);i<=s;i++)///递增序,不重复还少dfs 
	{
		a[c+1]=i;
		dfs(s-i,c+1);
	}
}
int main() {
    ios::sync_with_stdio(0);
    cin.tie(0);
    cout.tie(0);
    //solve();
	cin>>n>>k;
 	dfs(n,0);
 	cout<<an;
    return 0;
}
相关推荐
张登杰踩4 分钟前
MCR ALS 多元曲线分辨算法详解
算法
YuTaoShao13 分钟前
【LeetCode 每日一题】3634. 使数组平衡的最少移除数目——(解法一)排序+滑动窗口
算法·leetcode·排序算法
波波00721 分钟前
每日一题:.NET 的 GC是如何分代工作的?
算法·.net·gc
风暴之零30 分钟前
变点检测算法PELT
算法
深鱼~31 分钟前
视觉算法性能翻倍:ops-cv经典算子的昇腾适配指南
算法·cann
李斯啦果31 分钟前
【PTA】L1-019 谁先倒
数据结构·算法
梵刹古音37 分钟前
【C语言】 指针基础与定义
c语言·开发语言·算法
啊阿狸不会拉杆1 小时前
《机器学习导论》第 5 章-多元方法
人工智能·python·算法·机器学习·numpy·matplotlib·多元方法
R1nG8632 小时前
CANN资源泄漏检测工具源码深度解读 实战设备内存泄漏排查
数据库·算法·cann
_OP_CHEN2 小时前
【算法基础篇】(五十六)容斥原理指南:从集合计数到算法实战,解决组合数学的 “重叠难题”!
算法·蓝桥杯·c/c++·组合数学·容斥原理·算法竞赛·acm/icpc