这是无意中在一个录音中听到的一个题目:一张很大很大的饼,给你一把足够长的刀,切n刀,最多可以得多少块?

这个问题听起来很简单,还是用程序记录一下吧。

解题:一刀都不切,有1块饼;

切第一刀,得2块饼;

切第二刀,这一刀跟原来那一刀有一个交点,把两块再分出两块,2+2=4;

切第三刀,为了得到更多,要让这一刀跟原来两刀都有交点,4+3=7;

切第四刀,为了得到更多,要让每一刀都跟之前得刀尽量都有交点,7+4=11;

....

切第n刀,f(n-1) + n;

代码如下:

package com.jandmin.demo.leetcode;/*** @description: 切大饼最大切法*      一张大饼切n刀,最多可以切多少块?* @author: JandMin* @create: 2019-06-14 09:06**/
public class CutThePie {public static void main(String[] args) {for(int i=0; i<11; i++){int total = cutPie(i);print("方式一",i,total);int num = 1;for(int j = 0; j<=i; j++){num = cutPie(num,j);if(j == i){print("方式二",i,num);break;}}}}/*** @Description: 打印* @Date: 2019/6/14* @param name* @param n* @param total* @return: void*/private static void print(String name,int n,int total){System.out.println(name + "切 " + n + " 刀最多得到 " + total + " 块饼");}/*** @Description: 方式一:一次性切大饼* @Date: 2019/6/14* @param knife 切得刀数量* @return: int 得到得答饼块数量*/private static int cutPie(int knife) {if(knife <= 0){return 1;}return cutPie(knife-1) + knife;}/*** @Description: 方式二:切大饼切一刀* @Date: 2019/6/14* @param before 切之前得大饼块数* @param knife 切的第第几刀* @return: int 当前切完的大饼块数量*/private static int cutPie(int before,int knife){return before + knife;}
}

结果:

方式一切 0 刀最多得到 1 块饼
方式二切 0 刀最多得到 1 块饼
方式一切 1 刀最多得到 2 块饼
方式二切 1 刀最多得到 2 块饼
方式一切 2 刀最多得到 4 块饼
方式二切 2 刀最多得到 4 块饼
方式一切 3 刀最多得到 7 块饼
方式二切 3 刀最多得到 7 块饼
方式一切 4 刀最多得到 11 块饼
方式二切 4 刀最多得到 11 块饼
方式一切 5 刀最多得到 16 块饼
方式二切 5 刀最多得到 16 块饼
方式一切 6 刀最多得到 22 块饼
方式二切 6 刀最多得到 22 块饼
方式一切 7 刀最多得到 29 块饼
方式二切 7 刀最多得到 29 块饼
方式一切 8 刀最多得到 37 块饼
方式二切 8 刀最多得到 37 块饼
方式一切 9 刀最多得到 46 块饼
方式二切 9 刀最多得到 46 块饼
方式一切 10 刀最多得到 56 块饼
方式二切 10 刀最多得到 56 块饼

【每周一算】一张大饼切n刀,最多可以切多少块?相关推荐

  1. 关于立体图形切n刀最多切多少块的结论及推导

    思路主要参照了知乎这个话题下德安城和安堇然的回答.自己再写一遍主要是为了加深理解. 首先直接给出结论: 在d维空间内,对于被切中的d维立体,每一刀将造成d-1维的划痕,将该d维立体分成两部分,则切n刀 ...

  2. 2022-6-4 小明爱上课,切木头,最多分成多少块,躲猫猫,争渡

    1. 小明爱上课 [动态规划] 小明非常喜欢上课,现在小明的课表有一些课,他可以通过课表选择上哪些课. 上课会有奖励,每门课上课时间长短不同奖励也会不一样,存在上课时间更长,奖励更少的情况.每一门课上 ...

  3. 切蛋糕能最多切多少块的问题

    本文只说明垂直桌面切的水平情况,不讨论空间问题. Problem Description 一个人在吃蛋糕前都会随机决定要切几刀,而且保证切完之后得到最多块蛋糕(只能垂直于底面切).有时候切得太多他自己 ...

  4. c语言 一张圆薄饼,切100刀,最多能切成多少块 c语言,甜甜圈上切两刀,最多能切成多少块?...

    作者:卜辰璟 所属院系 数学科学系 关键词:甜甜圈切块 几何 摘要 在甜甜圈上切两刀,最多能切成多少块? 这是一个有趣的问题,但是寻找答案的过程体现了解决数学问题的一般流程:通过直觉猜想出可能的方法和 ...

  5. php 蛋糕一刀均分试题,5个小朋友分一个蛋糕,只准切三刀,该怎样才能平分

    搞笑段子精选:有个人请客喝酒,但酒味很淡,客人尝了尝后却极力称赞他家的烹调技艺高超,十分可口.主人便说:"普通的饭菜都还没有上桌,你怎么就说好呢?"客人答道:"不用提别的 ...

  6. 切蛋糕n刀最多切成几分

    这道题要一步一步来的: (1) n条直线最多分平面问题 题目大致如:n条直线,最多可以把平面分为多少个区域. 析:可能你以前就见过这题目,这充其量是一道初中的思考题.但一个类型的题目还是从简单的入手, ...

  7. n刀切蛋糕问题(最多切多少块c语言)

    分析:第一刀两块每切一刀多i块 //n刀切蛋糕问题,最多多少块 #include<stdio.h> int main(){int n,i;//i刀int cake;printf(" ...

  8. 【每周一算】完美数,java获取

    以下来自百度百科: 完全数(Perfect number),又称完美数或完备数,是一些特殊的自然数.它所有的真因子(即除了自身以外的约数)的和(即因子函数),恰好等于它本身.如果一个数恰好等于它的因子 ...

  9. 递推递归练习 B - 王小二切饼

    Description 王小二自夸刀工不错,有人放一张大的煎饼在砧板上,问他:"饼不许离开砧板,切n(1<=n<=100)刀最多能分成多少块?" Input 输入切的刀 ...

最新文章

  1. 机器人能否取代人工?阿迪达斯付出血的教训,含泪关闭智能工厂
  2. ASP条件语句之IF语句
  3. UNP Chapter 11 - 高级名字与地址转换
  4. Redis进阶-string底层数据结构精讲
  5. mysql控制台增加一个用户_MySQL 纯命令行添加用户
  6. Spring Boot的学习之路(03):基础环境搭建,做好学习前的准备工作
  7. Erlang虚拟机的启动
  8. KubeOperator总体介绍(K8S集群部署管理工具)
  9. 排序算法——单链表快速排序(划分函数从一边划分)
  10. DOS 网络命令之 arp
  11. 【数论】YY的GCD(P2257)
  12. THEOS的第一个TWeak的成功创建
  13. 移动设备和SharePoint 2013 - 第5部分:自定义应用
  14. meta 标签的作用
  15. 亚马逊向GuardDuty服务添加三种新的威胁检测规则
  16. 广告系统数据采集方法介绍
  17. linux认证ppt的图片,linux用户、组和身份认证-课件(PPT-精).ppt
  18. To install spack and your first package
  19. NVIDIA英伟达又发布了哪些黑科技?
  20. 基于单片机的智能教室控制系统的设计

热门文章

  1. PHP运行时网页出现乱码怎么解决
  2. 2. 拍照的基础知识
  3. 机器学习决策树算法和分类原理
  4. Android笔记——My First App
  5. 华为nova8和荣耀50最大的区别是什么知道吗?你i哪个
  6. 使用C++快速计算网络抗毁性
  7. 验08利用gdb工具调试c语言程序,实验4_C开发工具和系统函数
  8. 治疗过敏性鼻炎用空气负离子
  9. vivoz5电池测试软件,vivo Z5续航能力测评!配备4500mAh大电池,续航神机名不虚传...
  10. poi 不自动计算 设置单元格公式_通过POI自动计算EXCEL中的公式