蓝桥杯算法题——题解Java版本——切面条

简介: 蓝桥杯算法题——题解Java版本——切面条



题目:切面条

一根高筋拉面,中间切一刀,可以得到2根面条。

如果先对折1次,中间切一刀,可以得到3根面条。

如果连续对折2次,中间切一刀,可以得到5根面条。 那么,连续对折10次,中间切一刀,会得到多少面条呢?

答案目标:

推导过程:

这个题应该找有几个节点,这个节点是干扰切断的关键。

这种题一般都会涉及2的次幂。

0折的时候,有0的节点,一刀分为了2条

1折的时候,有1个节点,一刀分为了3条,假如没有那个节点,应该是4条,所以 4 - 1 = 3

2折的时候,是在1折的基础上,本身已经有1个节点,然后再加上2个,1 + 2 = 3个节点,一刀切开本身应该8条,所以8-3=5.

3折的时候,是在2折基础上,1 + 2 + 4 = 7个节点,一刀切开,本身应该16条,16-7=9条。

。。。

。。。

所以我们找出规律:

n折的时候,节点数应该为 2的0次幂+......2的n-1次幂。也就是2的n次幂-1。所以10次的时候,有1024-1=1023个节点。

n折的时候本身应该有2的n+1次幂2048条。所以2048-1023=1025

故而有:

折 条

0 2

1 3

2 5

推导可得:

解析过程:

将目标对折次数带入方程式可得:

n=10

count=1+ =1+1024=1025

对照Java编码1:

package com.item.action;
import java.util.Scanner;
public class Demo1 {
  public static void main(String[] args) {
    // 切面条·没有说N的取值范围
    //推导式:count=1+Math.pow(2,n);
    Scanner sc =new Scanner(System.in);
    int n = sc.nextInt();
    sc.close();
    int count=(int) (1+Math.pow(2,n));
    System.out.println(count);
  }
}

对照Java编码2:

如果使用纯暴力也是可以的,因为我们已经掌握了循环的规律。

package com.item.action;
import java.util.Scanner;
public class Demo1_2 {
  public static void main(String[] args) {
    // TODO Auto-generated method stub
    Scanner sc = new Scanner(System.in);
    int n = sc.nextInt();
    sc.close();
    int result = 2;//底数
    int temp = 1;//用于缓存
    // 循环累加公式: 2 + 2^0 + 2^1 + 2^2 + ...... + 2^n
    for (int i = 0; i < n; i++) {
      result += temp;
      temp = temp * 2;//2的n次方,进行累加
    }
    System.out.println(result);
  }
}

总结:

本题目有很多种解法,无论是用手画,或者挨个计算,或者使用暴力循环,以及向我一样推导出对应的算法公式传递参数都可以。

相关文章
|
19天前
|
存储 算法 Java
Java数据结构与算法-java数据结构与算法(二)
Java数据结构与算法-java数据结构与算法
60 1
|
13天前
|
搜索推荐 Java
Java排序算法
Java排序算法
16 0
|
13天前
|
搜索推荐 Java
Java基础(快速排序算法)
Java基础(快速排序算法)
20 4
|
16天前
|
存储 算法 JavaScript
Java入门高频考查算法逻辑基础知识3-编程篇(超详细18题1.8万字参考编程实现)
解决这类问题时,建议采取下面的步骤: 理解数学原理:确保你懂得基本的数学公式和法则,这对于制定解决方案至关重要。 优化算法:了解时间复杂度和空间复杂度,并寻找优化的机会。特别注意避免不必要的重复计算。 代码实践:多编写实践代码,并确保你的代码是高效、清晰且稳健的。 错误检查和测试:要为你的代码编写测试案例,测试标准的、边缘情况以及异常输入。 进行复杂问题简化:面对复杂的问题时,先尝试简化问题,然后逐步分析和解决。 沟通和解释:在编写代码的时候清晰地沟通你的思路,不仅要写出正确的代码,还要能向面试官解释你的
32 0
|
19天前
|
XML 存储 算法
Java数据结构与算法-java数据结构与算法(五)
Java数据结构与算法-java数据结构与算法
47 0
|
26天前
|
Java API 计算机视觉
java实现人脸识别V3版本开发
java实现人脸识别V3版本开发
17 0
|
27天前
|
算法 搜索推荐 Java
利用java编写的项目设备调配系统代码示例(内含5种设备调配的算法)
利用java编写的项目设备调配系统代码示例(内含5种设备调配的算法)
13 1
|
1月前
|
机器学习/深度学习 算法 生物认证
基于深度学习的人员指纹身份识别算法matlab仿真
基于深度学习的人员指纹身份识别算法matlab仿真
|
22天前
|
传感器 算法 计算机视觉
基于肤色模型和中值滤波的手部检测算法FPGA实现,包括tb测试文件和MATLAB辅助验证
该内容是关于一个基于肤色模型和中值滤波的手部检测算法的描述,包括算法的运行效果图和所使用的软件版本(matlab2022a, vivado2019.2)。算法分为肤色分割和中值滤波两步,其中肤色模型在YCbCr色彩空间定义,中值滤波用于去除噪声。提供了一段核心程序代码,用于处理图像数据并在FPGA上实现。最终,检测结果输出到&quot;hand.txt&quot;文件。
|
29天前
|
机器学习/深度学习 算法 计算机视觉
基于yolov2深度学习网络的视频手部检测算法matlab仿真
基于yolov2深度学习网络的视频手部检测算法matlab仿真