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

在线体验各类最新模型,更有模型 免费Token 额度领取!
立即体验
简介: 蓝桥杯算法题——题解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);
  }
}

总结:

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

相关文章
|
9月前
|
机器学习/深度学习 算法 C++
【DFS/回溯算法】2016年蓝桥杯真题之路径之谜详解
题目要求根据城堡北墙和西墙箭靶上的箭数,推断骑士从西北角到东南角的唯一路径。每步移动时向正北和正西各射一箭,同一格不重复经过。通过DFS回溯模拟“拔箭”过程,验证路径合法性。已知箭数约束路径唯一,最终按编号输出行走顺序。
|
9月前
|
设计模式 算法 搜索推荐
Java 设计模式之策略模式:灵活切换算法的艺术
策略模式通过封装不同算法并实现灵活切换,将算法与使用解耦。以支付为例,微信、支付宝等支付方式作为独立策略,购物车根据选择调用对应支付逻辑,提升代码可维护性与扩展性,避免冗长条件判断,符合开闭原则。
2387 35
|
9月前
|
存储 算法 搜索推荐
《数据之美》:Java数据结构与算法精要
本系列深入探讨数据结构与算法的核心原理及Java实现,涵盖线性与非线性结构、常用算法分类、复杂度分析及集合框架应用,助你提升程序效率,掌握编程底层逻辑。
|
10月前
|
安全 架构师 Java
Java LTS版本进化秀:从8到21的欢乐升级之旅
困惑于Java版本选择?轻松幽默地穿越Java LTS版本时光隧道,掌握从Java 8到21的关键特性。通过一家初创公司的系统升级故事,直观了解每个版本如何解决代码冗余、性能瓶颈等开发痛点,助你在技术选型中做出明智决策。
533 7
|
9月前
|
存储 人工智能 算法
从零掌握贪心算法Java版:LeetCode 10题实战解析(上)
在算法世界里,有一种思想如同生活中的"见好就收"——每次做出当前看来最优的选择,寄希望于通过局部最优达成全局最优。这种思想就是贪心算法,它以其简洁高效的特点,成为解决最优问题的利器。今天我们就来系统学习贪心算法的核心思想,并通过10道LeetCode经典题目实战演练,带你掌握这种"步步为营"的解题思维。
|
12月前
|
机器学习/深度学习 算法 Java
Java实现林火蔓延路径算法
记录正在进行的森林防火项目中林火蔓延功能,本篇文章可以较好的实现森林防火蔓延,但还存在很多不足,如:很多参数只能使用默认值,所以蔓延范围仅供参考。(如果底层设备获取的数据充足,那当我没说)。注:因林火蔓延涉及因素太多,如静可燃物载量、矿质阻尼系数等存在估值,所以得出的结果仅供参考。
538 5
|
11月前
|
Cloud Native Java API
Java Spring框架技术栈选和最新版本及发展史详解(截至2025年8月)-优雅草卓伊凡
Java Spring框架技术栈选和最新版本及发展史详解(截至2025年8月)-优雅草卓伊凡
1735 0
|
11月前
|
运维 监控 算法
基于 Java 滑动窗口算法的局域网内部监控软件流量异常检测技术研究
本文探讨了滑动窗口算法在局域网流量监控中的应用,分析其在实时性、资源控制和多维分析等方面的优势,并提出优化策略,结合Java编程实现高效流量异常检测。
432 0
|
9月前
|
机器学习/深度学习 算法 机器人
【水下图像增强融合算法】基于融合的水下图像与视频增强研究(Matlab代码实现)
【水下图像增强融合算法】基于融合的水下图像与视频增强研究(Matlab代码实现)
757 0
|
9月前
|
数据采集 分布式计算 并行计算
mRMR算法实现特征选择-MATLAB
mRMR算法实现特征选择-MATLAB
481 2