Q04切分木棒
来源:互联网 发布:阿里云ecs上传文件 编辑:程序博客网 时间:2024/05/22 16:41
本文是程序员算法趣题一书Q04 C语言实现,由于该书中所给的代码是Javascripts与Ruby,故在今后的阅读中会记录部分习题的C语言实现。
Q04问题后面的Column中介绍了深度优先搜索和广度优先搜索。
深度优先搜索算法(英语:Depth-First-Search,简称DFS)是一种用于遍历或搜索树或图的算法。沿着树的深度遍历树的节点,尽可能深的搜索树的分支。当节点v的所在边都己被探寻过,搜索将回溯到发现节点v的那条边的起始节点。这一过程一直进行到已发现从源节点可达的所有节点为止。如果还存在未被发现的节点,则选择其中一个作为源节点并重复以上过程,整个进程反复进行直到所有节点都被访问为止。
广度优先搜索算法(英语:Breadth-First-Search,缩写为BFS),又译作宽度优先搜索,或横向优先搜索,是一种图形搜索算法。简单的说,BFS是从根节点开始,沿着树的宽度遍历树的节点。如果所有节点均被访问,则算法中止。广度优先搜索的实现一般采用open-closed表。
代码实现两种方式:
/* Name: Q04切分木棒 Copyright: 52coder.net Author: 52coder Date: 04/09/17 23:44 Description: Q04*/#include <stdio.h>#include <stdlib.h>/*递归实现,终止条件是木棒数大于n*/int cutbar(int n,int m,int current){ if(current >= n) return 0; else if(current < m)/*人多,可以当前current,下次翻倍*/ return 1 + cutbar(n,m,current * 2); else/*人比木棒数目少,下次多m个木棒*/ return 1 + cutbar(n,m,current + m);}/*逆向思维方法m个人黏1cm的木棒组成n cm的木棒*/int cut(n,m){ int count = 0; int current = 1; while(current <= n) { if(current < m) current += current; else current += m; count += 1; } return count; }int main(){ int n = cut(20,3); int m = cut(100,5); printf("%d %d\n",n,m); return(0);}
阅读全文
0 0
- Q04切分木棒
- 木棒
- 木棒
- 木棒
- 木棒
- 木棒问题
- 木棒三角形
- poj_1011木棒
- poj1011木棒
- poj 木棒
- 木棒三角形
- 【poj1011】木棒
- POJ1011 木棒
- POJ1011 木棒
- 凑木棒
- POJ1011 木棒
- 木棒拼图
- 木棒问题
- Java实现红黑树
- 深夜切题——等差对
- SQL查询之返回最值所在的行数据
- 'supervisor'进程管理工具配置与使用
- 设计模式——责任链模式
- Q04切分木棒
- Unicode的解决方案
- ubuntu server 16.04云端完美安装redmine方法总结
- 宏定义和别名在Windows编程上的应用
- mysql优化-表的优化与列类型的选择
- 设计模式——状态模式
- 无穷小微积分落地生根在中国,我们要有数学基础理论的自信!
- 算法课程Leetcode作业第四周技术博客
- 【分布式】分布式session