【每周一算】一张大饼切n刀,最多可以切多少块?
这是无意中在一个录音中听到的一个题目:一张很大很大的饼,给你一把足够长的刀,切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刀,最多可以切多少块?相关推荐
- 关于立体图形切n刀最多切多少块的结论及推导
思路主要参照了知乎这个话题下德安城和安堇然的回答.自己再写一遍主要是为了加深理解. 首先直接给出结论: 在d维空间内,对于被切中的d维立体,每一刀将造成d-1维的划痕,将该d维立体分成两部分,则切n刀 ...
- 2022-6-4 小明爱上课,切木头,最多分成多少块,躲猫猫,争渡
1. 小明爱上课 [动态规划] 小明非常喜欢上课,现在小明的课表有一些课,他可以通过课表选择上哪些课. 上课会有奖励,每门课上课时间长短不同奖励也会不一样,存在上课时间更长,奖励更少的情况.每一门课上 ...
- 切蛋糕能最多切多少块的问题
本文只说明垂直桌面切的水平情况,不讨论空间问题. Problem Description 一个人在吃蛋糕前都会随机决定要切几刀,而且保证切完之后得到最多块蛋糕(只能垂直于底面切).有时候切得太多他自己 ...
- c语言 一张圆薄饼,切100刀,最多能切成多少块 c语言,甜甜圈上切两刀,最多能切成多少块?...
作者:卜辰璟 所属院系 数学科学系 关键词:甜甜圈切块 几何 摘要 在甜甜圈上切两刀,最多能切成多少块? 这是一个有趣的问题,但是寻找答案的过程体现了解决数学问题的一般流程:通过直觉猜想出可能的方法和 ...
- php 蛋糕一刀均分试题,5个小朋友分一个蛋糕,只准切三刀,该怎样才能平分
搞笑段子精选:有个人请客喝酒,但酒味很淡,客人尝了尝后却极力称赞他家的烹调技艺高超,十分可口.主人便说:"普通的饭菜都还没有上桌,你怎么就说好呢?"客人答道:"不用提别的 ...
- 切蛋糕n刀最多切成几分
这道题要一步一步来的: (1) n条直线最多分平面问题 题目大致如:n条直线,最多可以把平面分为多少个区域. 析:可能你以前就见过这题目,这充其量是一道初中的思考题.但一个类型的题目还是从简单的入手, ...
- n刀切蛋糕问题(最多切多少块c语言)
分析:第一刀两块每切一刀多i块 //n刀切蛋糕问题,最多多少块 #include<stdio.h> int main(){int n,i;//i刀int cake;printf(" ...
- 【每周一算】完美数,java获取
以下来自百度百科: 完全数(Perfect number),又称完美数或完备数,是一些特殊的自然数.它所有的真因子(即除了自身以外的约数)的和(即因子函数),恰好等于它本身.如果一个数恰好等于它的因子 ...
- 递推递归练习 B - 王小二切饼
Description 王小二自夸刀工不错,有人放一张大的煎饼在砧板上,问他:"饼不许离开砧板,切n(1<=n<=100)刀最多能分成多少块?" Input 输入切的刀 ...
最新文章
- 机器人能否取代人工?阿迪达斯付出血的教训,含泪关闭智能工厂
- ASP条件语句之IF语句
- UNP Chapter 11 - 高级名字与地址转换
- Redis进阶-string底层数据结构精讲
- mysql控制台增加一个用户_MySQL 纯命令行添加用户
- Spring Boot的学习之路(03):基础环境搭建,做好学习前的准备工作
- Erlang虚拟机的启动
- KubeOperator总体介绍(K8S集群部署管理工具)
- 排序算法——单链表快速排序(划分函数从一边划分)
- DOS 网络命令之 arp
- 【数论】YY的GCD(P2257)
- THEOS的第一个TWeak的成功创建
- 移动设备和SharePoint 2013 - 第5部分:自定义应用
- meta 标签的作用
- 亚马逊向GuardDuty服务添加三种新的威胁检测规则
- 广告系统数据采集方法介绍
- linux认证ppt的图片,linux用户、组和身份认证-课件(PPT-精).ppt
- To install spack and your first package
- NVIDIA英伟达又发布了哪些黑科技?
- 基于单片机的智能教室控制系统的设计
热门文章
- PHP运行时网页出现乱码怎么解决
- 2. 拍照的基础知识
- 机器学习决策树算法和分类原理
- Android笔记——My First App
- 华为nova8和荣耀50最大的区别是什么知道吗?你i哪个
- 使用C++快速计算网络抗毁性
- 验08利用gdb工具调试c语言程序,实验4_C开发工具和系统函数
- 治疗过敏性鼻炎用空气负离子
- vivoz5电池测试软件,vivo Z5续航能力测评!配备4500mAh大电池,续航神机名不虚传...
- poi 不自动计算 设置单元格公式_通过POI自动计算EXCEL中的公式