CSDN蓝桥杯算法题——题解Java版本——切面条
2023-06-13 09:17:01 时间
目录
题目:切面条
一根高筋拉面,中间切一刀,可以得到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);
}
}
总结:
本题目有很多种解法,无论是用手画,或者挨个计算,或者使用暴力循环,以及向我一样推导出对应的算法公式传递参数都可以。
相关文章
- c++时间戳转换日期格式_java时间戳转换成时间
- 【算法】java 实现数组的反转
- 文本分类算法之–贝叶斯分类算法的实现Java版本
- java技术介绍_Java技术汇总
- MySQL字段类型如何转为java_Java JDBC中,MySQL字段类型到JAVA类型的转换
- java版本结巴分词算法bug[通俗易懂]
- java笛卡尔积算法_Java 笛卡尔积算法的简单实现
- java 基础语法
- JAVA对象转map_java处理字符串类型的map
- Java 零拷贝_java clone 深拷贝
- Java GC的那些事(2)详解编程语言
- MySQL与Java的强强联合:开启智能数据库时代(mysql和java)
- Linux环境下编译Java程序的指南(linux编译java)
- 深入Linux环境下Java应用调试实践(linux调试java)
- 数据库写入Java实现MySQL数据库的写入操作(java向mysql)
- Java联合Redis:建立良好数据连接(java连接redis)
- 深入浅出Java配置MySQL数据库(java配置mysql)
- 版本配置Linux系统的默认Java版本(linux默认java)
- 机制Java Redis实现自动过期机制(redisjava过期)
- 检测Redis Java过期数据检测实践(redisjava过期)
- Java轻松处理Redis缓存(java处理redis)
- 管理Linux下Java版本管理:轻松实现多版本切换(linux下java版本)
- 进行操作学会使用Java玩转Redis(在java中队redis)
- 本使用Oracle Java 进行升级新版本带来新体验(oracle java版)
- Java判断本机IP地址类型的方法
- JAVA算法起步之堆排序实例