例:用一张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简单的代码算法优化(例)相关推荐

  1. 讲解java源码_Java学习之Java源码讲解

    关于Java中源码的学习,是不少同学头疼的知识点.本文整理了JAVA源码学习的八大要点,分别是基础知识.面向对象.异常处理.集合.综合类核心代码.JAVA8新特性.Input/Output和Java小 ...

  2. java程序伪代码_Java学习笔记——伪代码及程序控制

    开学刚刚一个月,学习Java也已经有三周. 老师给了下面的实验题目: 某教师需要一个学生成绩计算应用程序.每个学生总评成绩是由平时成绩.期中成绩.期末成绩 和其它成绩组成,其所占比例为:平时成绩30% ...

  3. JAVA不同类型数组重载_java学习笔记--java中的方法与数组

    方法 完成特定功能的代码块 方法的格式 修饰符 返回值类型 方法名(参数类型 参数名1,参数类型 参数名2...){ //方法体 return 返回值: } 方法的调用方式 通过方法名调用方法 根据形 ...

  4. java 字符串赋值_Java 学习笔记(二)变量

    标识符  标识符就是名字.类名,变量名,方法名,参数名等  标识符的命名规则  以字母.下划线或美元符号$开头,不能以数字开头 其后可以是字母.数组或美元符号$ 区分大小写 避免使用关键字  ...

  5. java 调用弗雷_JAVA 学习笔记

    封装: 将类的某些信息隐藏在类的内部,不允许外部程序访问,而是通过该类提供的方法实现对隐藏信息的操作和访问,保证了数据的安全性.(可以隐藏类的细节,方便修改) 封装的实现步骤: 1.修改属性的可见性: ...

  6. java日期类型_Java 学习笔记 (三) Java 日期类型

    以下内容摘自:  https://www.cnblogs.com/crazylqy/p/4172324.html import java.sql.Timestamp; import java.text ...

  7. JAVA翻译官_Java学习笔记之——Java介绍

    1.Java体系: JavaSE:标准版,其他两个体系的基础 JavaEE:企业版 JavaME:微型版,适用于消费类型的微型设备 2.Java三大特性:封装.继承.多态 3.Java的特点:面向对象 ...

  8. java jcf查看_Java学习笔记——JCF集合框架

    List基本使用 特别是有顺序,所有可以用get(i)读取出来 public static void main(String[] args) { //1.List基本使用 List lst = new ...

  9. java 二叉树特点_java学习笔记-二叉树、平衡二叉树(AVL)、红黑二叉树(十)

    各种树 标签:数据结构范畴 二叉树的定义: 二叉树是树形结构的一个重要类型. 许多实际问题抽象出来的数据结构往往是二叉树的形式,即使是一般的树也能简单地转换为二叉树,而且二叉树的存储结构及其算法都较为 ...

最新文章

  1. 2021年大数据Spark(十三):Spark Core的RDD创建
  2. 解决真机编译出现System.DllNotFoundException: 'libmono-native.so'错误都方法
  3. 年少成名的我并没有放弃自己,谁敢说她\他文章比我写的好?!,不服来战!...
  4. Oracle 查询历史数据(转帖)
  5. 保存blob为本地文件
  6. vs2005中的aspnetdb(转)
  7. 在Sql Server 2008上安装SDE 9.3
  8. Mac电脑卡在启动模式了怎么办?
  9. 备战2019秋招之程序员代码面试指南(左程云)C++
  10. Android 打造RxBus2.x的全面详解
  11. Nginx与Zuul的区别
  12. CAD 关于打断和合并对象
  13. Android未来5年的发展前景和趋势
  14. 怎么撰写一份优秀的数据分析报告(一)
  15. 开源鸿蒙南向嵌入学习笔记——NAPI框架学习(一)
  16. H5与其他平台交互框架
  17. 计算机二级word难点大全,2019年3月计算机二级Word难点重点汇总
  18. R 熵权法计算权重及综合得分
  19. CCS如何连接DSP目标板,但是不烧写内容
  20. 软件测试工具之——selenium-IDE下载安装与该附件组件已无法安装,因为它似乎已损坏问题解决

热门文章

  1. Spring Boot+JWT+Shiro+MyBatisPlus 实现 RESTful 快速开发后端脚手架!
  2. mysql 主键约束起名_MySQL名称的主键约束
  3. 如何下载旧版本R和R包?
  4. html5 swipe滑动选择身高,Swipe 移动端滑动插件使用详解
  5. 大数据学习笔记:聚类分析
  6. 揭秘微信对方正在输入……到底表示什么意思?
  7. 长波红外线灯的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告
  8. 2020泰迪杯C题解题流程
  9. 嵌入式专业英文词汇汇总
  10. css3 3d旋转图片立方体特效代码