java算法优化_Java学习笔记---Java简单的代码算法优化(例)
例:用一张1元纸币兑换1分、2分、5分硬币,要求兑换50枚硬币,求出所有组合。
package mypackage01;
public class demo
{
public static void main(String[] args)
{
func1();
System.out.println("分割线-----------------------------------------------------------------");
func2();
}
private static void func1()//方法1:通常我们会用遍历的方法去解决这一类型的问题
{
//分析:假设兑换了i枚一分硬币、j枚两分硬币、k枚五分硬币
//则必须要满足条下列件:
//i + 2*j + 5*k = 100
//i + j + k = 50
int m = 0;//m用于组合种类计数
for (int i = 0; i < 51; i++)
{
for (int j = 0; j < 51; j++)
{
for (int k = 0; k < 51; k++)
{
if (i + 2*j + 5*k == 100 && i + j + k == 50)
{
m += 1;
System.out.print("第" + m + "种组合:\t\t");
System.out.print("一分硬币 " + i +" 枚\t\t");
System.out.print("两分硬币 " + j +" 枚\t\t");
System.out.print("五分硬币 " + k +" 枚\n");
}
}
}
}
}
private static void func2()//方法2:优化遍历项,减去不必要的性能损失
{
//分析:假设兑换了i枚一分硬币、j枚两分硬币、k枚五分硬币
//则必须要满足条下列件:
//i + 2*j + 5*k = 100
//i + j + k = 50
//其中令i为常量,则该方程为二元一次方程组
//则k = i / 3; j = 50 - 4 * k;
int m = 0;//m用于组合种类计数
for (int i = 0; i <= 50; i++)
{
if (i % 3 == 0)
{
int k = i / 3;
int j = 50 - 4 * k;
if (j >= 0)
{
m += 1;
System.out.print("第" + m + "种组合:\t\t");
System.out.print("一分硬币 " + i +" 枚\t\t");
System.out.print("两分硬币 " + j +" 枚\t\t");
System.out.print("五分硬币 " + k +" 枚\n");
}
}
}
}
}
运行结果:
第1种组合: 一分硬币 0 枚 两分硬币 50 枚 五分硬币 0 枚
第2种组合: 一分硬币 3 枚 两分硬币 46 枚 五分硬币 1 枚
第3种组合: 一分硬币 6 枚 两分硬币 42 枚 五分硬币 2 枚
第4种组合: 一分硬币 9 枚 两分硬币 38 枚 五分硬币 3 枚
第5种组合: 一分硬币 12 枚 两分硬币 34 枚 五分硬币 4 枚
第6种组合: 一分硬币 15 枚 两分硬币 30 枚 五分硬币 5 枚
第7种组合: 一分硬币 18 枚 两分硬币 26 枚 五分硬币 6 枚
第8种组合: 一分硬币 21 枚 两分硬币 22 枚 五分硬币 7 枚
第9种组合: 一分硬币 24 枚 两分硬币 18 枚 五分硬币 8 枚
第10种组合: 一分硬币 27 枚 两分硬币 14 枚 五分硬币 9 枚
第11种组合: 一分硬币 30 枚 两分硬币 10 枚 五分硬币 10 枚
第12种组合: 一分硬币 33 枚 两分硬币 6 枚 五分硬币 11 枚
第13种组合: 一分硬币 36 枚 两分硬币 2 枚 五分硬币 12 枚
分割线-----------------------------------------------------------------
第1种组合: 一分硬币 0 枚 两分硬币 50 枚 五分硬币 0 枚
第2种组合: 一分硬币 3 枚 两分硬币 46 枚 五分硬币 1 枚
第3种组合: 一分硬币 6 枚 两分硬币 42 枚 五分硬币 2 枚
第4种组合: 一分硬币 9 枚 两分硬币 38 枚 五分硬币 3 枚
第5种组合: 一分硬币 12 枚 两分硬币 34 枚 五分硬币 4 枚
第6种组合: 一分硬币 15 枚 两分硬币 30 枚 五分硬币 5 枚
第7种组合: 一分硬币 18 枚 两分硬币 26 枚 五分硬币 6 枚
第8种组合: 一分硬币 21 枚 两分硬币 22 枚 五分硬币 7 枚
第9种组合: 一分硬币 24 枚 两分硬币 18 枚 五分硬币 8 枚
第10种组合: 一分硬币 27 枚 两分硬币 14 枚 五分硬币 9 枚
第11种组合: 一分硬币 30 枚 两分硬币 10 枚 五分硬币 10 枚
第12种组合: 一分硬币 33 枚 两分硬币 6 枚 五分硬币 11 枚
第13种组合: 一分硬币 36 枚 两分硬币 2 枚 五分硬币 12 枚
java算法优化_Java学习笔记---Java简单的代码算法优化(例)相关推荐
- 讲解java源码_Java学习之Java源码讲解
关于Java中源码的学习,是不少同学头疼的知识点.本文整理了JAVA源码学习的八大要点,分别是基础知识.面向对象.异常处理.集合.综合类核心代码.JAVA8新特性.Input/Output和Java小 ...
- java程序伪代码_Java学习笔记——伪代码及程序控制
开学刚刚一个月,学习Java也已经有三周. 老师给了下面的实验题目: 某教师需要一个学生成绩计算应用程序.每个学生总评成绩是由平时成绩.期中成绩.期末成绩 和其它成绩组成,其所占比例为:平时成绩30% ...
- JAVA不同类型数组重载_java学习笔记--java中的方法与数组
方法 完成特定功能的代码块 方法的格式 修饰符 返回值类型 方法名(参数类型 参数名1,参数类型 参数名2...){ //方法体 return 返回值: } 方法的调用方式 通过方法名调用方法 根据形 ...
- java 字符串赋值_Java 学习笔记(二)变量
标识符 标识符就是名字.类名,变量名,方法名,参数名等 标识符的命名规则 以字母.下划线或美元符号$开头,不能以数字开头 其后可以是字母.数组或美元符号$ 区分大小写 避免使用关键字 ...
- java 调用弗雷_JAVA 学习笔记
封装: 将类的某些信息隐藏在类的内部,不允许外部程序访问,而是通过该类提供的方法实现对隐藏信息的操作和访问,保证了数据的安全性.(可以隐藏类的细节,方便修改) 封装的实现步骤: 1.修改属性的可见性: ...
- java日期类型_Java 学习笔记 (三) Java 日期类型
以下内容摘自: https://www.cnblogs.com/crazylqy/p/4172324.html import java.sql.Timestamp; import java.text ...
- JAVA翻译官_Java学习笔记之——Java介绍
1.Java体系: JavaSE:标准版,其他两个体系的基础 JavaEE:企业版 JavaME:微型版,适用于消费类型的微型设备 2.Java三大特性:封装.继承.多态 3.Java的特点:面向对象 ...
- java jcf查看_Java学习笔记——JCF集合框架
List基本使用 特别是有顺序,所有可以用get(i)读取出来 public static void main(String[] args) { //1.List基本使用 List lst = new ...
- java 二叉树特点_java学习笔记-二叉树、平衡二叉树(AVL)、红黑二叉树(十)
各种树 标签:数据结构范畴 二叉树的定义: 二叉树是树形结构的一个重要类型. 许多实际问题抽象出来的数据结构往往是二叉树的形式,即使是一般的树也能简单地转换为二叉树,而且二叉树的存储结构及其算法都较为 ...
最新文章
- 2021年大数据Spark(十三):Spark Core的RDD创建
- 解决真机编译出现System.DllNotFoundException: 'libmono-native.so'错误都方法
- 年少成名的我并没有放弃自己,谁敢说她\他文章比我写的好?!,不服来战!...
- Oracle 查询历史数据(转帖)
- 保存blob为本地文件
- vs2005中的aspnetdb(转)
- 在Sql Server 2008上安装SDE 9.3
- Mac电脑卡在启动模式了怎么办?
- 备战2019秋招之程序员代码面试指南(左程云)C++
- Android 打造RxBus2.x的全面详解
- Nginx与Zuul的区别
- CAD 关于打断和合并对象
- Android未来5年的发展前景和趋势
- 怎么撰写一份优秀的数据分析报告(一)
- 开源鸿蒙南向嵌入学习笔记——NAPI框架学习(一)
- H5与其他平台交互框架
- 计算机二级word难点大全,2019年3月计算机二级Word难点重点汇总
- R 熵权法计算权重及综合得分
- CCS如何连接DSP目标板,但是不烧写内容
- 软件测试工具之——selenium-IDE下载安装与该附件组件已无法安装,因为它似乎已损坏问题解决