百炼-2817-木棒-C语言-递归

这篇博客探讨了一道有趣的编程题,题目涉及使用C语言通过递归算法来解决复杂的状态问题。博主强调在处理这类问题时,需要深入理解递归状态的转换。
摘要由CSDN通过智能技术生成

这个问题就很有意思了,他的状态不再是用单变量表示的,要仔细考虑状态的递归。

/******************************************************
**文件名:百炼-2817
**Copyright (c) 2015-2025 OrdinaryCrazy
**创建人:OrdinaryCrazy
**日期:20170806
**描述:百炼2817参考答案
**版本:1.0
******************************************************/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int n,sticks[64],used[64];
int compare(const void* a,const void* b)
{
    return *(int*)b - *(int*)a;
}
/*******************************************************
首先,对于最小的木棒长度
1,他能整除总长度
2,他比最长的小木棒长
所以我们需要枚举从最长的小木棒长到总长度的所有长度,直到找到一个可行的长度
那么对于一个长度,我们判断它是否可行的方法就是逆推,假如就是这个长度,看能不能分出这么多的小木棍
递归状态f(k,left,len,n)
k-还需要切多少个小木棒
left-现在在切的那根还剩多少
len-木棒长度
n-还有多
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值