算法应用之百钱买白鸡

案列说明:主要内容是:公鸡5元一只,母鸡3元一只,小鸡1元三只,问100元怎样可以买100鸡?

思想:想要实现此算法,只要明白各种条件的关系即可,而且知道公鸡最多买20只,母鸡最多买33只,小鸡最多买100只,这样买各种鸡的钱总为100,元,鸡的只数也是100;

实现代码:

package 算法应用;
/**
*
* @author Administrator
*
*/
public class BQMJ {
public static void main(String[] args) {
int cock,hen,chicken=0;
for(cock=0;cock<=19;cock++){
for(hen=0;hen<=33;hen++){
chicken=100-cock-hen;
int p;
p=chicken%3;
if(((5*cock+3*hen+chicken/3)==100)&&(p==0)){
System.out.print(" 可以买公鸡的只数:"+cock);
System.out.print(" 可以买母鸡的只数:"+hen);
System.out.print(" 可以买小鸡的只数:"+chicken);
System.out.println("\n");
}
} }
}
}

运行结果:

算法应用之韩信点兵

案列说明:韩信带兵不足百人,3人一行排列多一人,7人一行排列少两人,5人一行正好,本例是计算韩信究竟点了多少兵?

想法:对于韩信点兵算法,只需将7人少2人转换7人多5人,这样解决问题的方法就很明显了,再限定人数不多于100即可。

实现代码:

package 算法应用;

public class Hxin {
public static void main(String[] args){
int a=0,b=0,c=0,preson; //定义总人数和各种站法的剩余人数
for(preson=0;preson<100;preson++){
a=preson%3; //每排三人剩余人数
b=preson%7; //每排七人的剩余人数
c=preson%5; //每排五人的剩余人数
if(a==1&&b==5&&c==0){ //都符合条件时的人数
System.out.println("韩信带的兵数是:"+preson);
}
}
}
}

得出结果为:40人

算法应用之斐波那契数列

说明:斐波那契数列的定义:它的第一项和第二项均为1,以后各项都为前两项之和

难点:如何设计好循环

实现代码:

package 算法应用;
import java.util.Scanner;
public class Fbo {
private static void f(int x){
int f1=1,f2=1,i=3;
if(x==1)System.out.print(f1);
if(x==2)System.out.print(f1+" "+f2);
if(x>=3){ //求位置大于三的数列
System.out.print(f1+" "+f2);
while(x>=i){ //求数列
f1=f2+f1; //求两项之和
System.out.print(" "+f1);
i++;
f2=f2+f1;
System.out.print(" "+f2);
}
}
}
public static void main(String[] args) {
Scanner s=new Scanner(System.in);
System.out.println("请输入你想查看的斐波那契数列个数:");
int num=s.nextInt();
System.out.println("你想看的斐波那契数列:");
f(num/2+1);
}
}

运行结果:

算法应用之汉诺塔

案列说明:汉诺塔问题是一个古典的数学问题,内容是:汉诺塔(又称河内塔)问题是源于印度一个古老传说的益智玩具。大梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上按照大小顺序摞着64片黄金圆盘。大梵天命令婆罗门把圆盘从下面开始按大小顺序重新摆放在另一根柱子上。并且规定,在小圆盘上不能放大圆盘,在三根柱子之间一次只能移动一个圆盘。

难点:将n个盘子从一个座移到另一个座上,这是每个移动者要做的,除去第一个移动者外,其余都要命令其他的移动者,就是第一个移动者开始,任务层层下放,最后将一个盘子从一个座移到另一个座上,这是第一个移动者自己做的工作,

实现代码:

package 算法应用;
import java.util.Scanner;
public class Hanoi { private static void move(char x,char y){
System.out.printf("%c-->%c",x,y);
System.out.print("\n");
}
private static void hanoit(int n,char one,char two,char three){ //将n个盘子从第一座借助第二座移到第三座
if(n==1){ //如果只有一个盘子
move(one,three);
}
else{
hanoit(n-1,one,three,two); //将一上的盘子借助三移到二上
move(one,three);
hanoit(n-1,two,one,three); //将二上的盘子借助一移到三上
}
}
public static void main(String[] args) {
int m;
System.out.println("请输入你要移动的盘子数:");
Scanner s=new Scanner(System.in);
m=s.nextInt();
System.out.println("移动"+m+"个盘子的步骤如下");
hanoit(m,'A','B','C'); }
}

运行结果:

算法篇---java算法应用的更多相关文章

  1. 算法篇---java经典问题!!!

    问题一:==与equal的区别? ==和 equals 都是比较的,而前者是运算符,后者则是一个方法,基本数据类型和引用数据类型都可以使用运算符==,而只有引用类型数据才可以使用 equals,下面具 ...

  2. 蓝桥杯算法训练 java算法 表达式求值

    问题描述 输入一个只包含加减乖除和括号的合法表达式,求表达式的值.其中除表示整除. 输入格式 输入一行,包含一个表达式. 输出格式 输出这个表达式的值. 样例输入 1-2+3*(4-5) 样例输出 - ...

  3. 二级py--day4 数据结构与算法篇

    二级py--day4 数据结构与算法篇 1.算法的基本特征:可行性.确定性.有穷性.拥有足够的情报 2.算法的设计要求包括效率与低存储量,既要考虑算法的时间复杂度和空间复杂度 3.算法的优劣:与算法描 ...

  4. 算法篇(前序)——Java的集合

    菜鸟拙见,望请纠正:附上JDK参考文档(中文文档和英文文档):链接:https://pan.baidu.com/s/14KDmCtQxeGCViq7e0zENjA 密码:e9xs  以及算法篇全文链接 ...

  5. 对一致性Hash算法,Java代码实现的深入研究

    一致性Hash算法 关于一致性Hash算法,在我之前的博文中已经有多次提到了,MemCache超详细解读一文中"一致性Hash算法"部分,对于为什么要使用一致性Hash算法.一致性 ...

  6. 8皇后以及N皇后算法探究,回溯算法的JAVA实现,非递归,循环控制及其优化

    上两篇博客 8皇后以及N皇后算法探究,回溯算法的JAVA实现,递归方案 8皇后以及N皇后算法探究,回溯算法的JAVA实现,非递归,数据结构“栈”实现 研究了递归方法实现回溯,解决N皇后问题,下面我们来 ...

  7. 查找算法(Java实现)

    1.二分查找算法 package other; public class BinarySearch { /* * 循环实现二分查找算法arr 已排好序的数组x 需要查找的数-1 无法查到数据 */ p ...

  8. Jvm垃圾回收器(算法篇)

    在<Jvm垃圾回收器(基础篇)>中我们主要学习了判断对象是否存活还是死亡?两种基础的垃圾回收算法:引用计数法.可达性分析算法.以及Java引用的4种分类:强引用.软引用.弱引用.虚引用.和 ...

  9. 对一致性Hash算法及java实现(转)

    一致性Hash算法 关于一致性Hash算法,在我之前的博文中已经有多次提到了,MemCache超详细解读一文中"一致性Hash算法"部分,对于为什么要使用一致性Hash算法.一致性 ...

随机推荐

  1. Maven运行Selenium报错org/w3c/dom/ElementTraversal

    项目使用maven 构建,并且使用集成测试(integration-test). 在命令行中运行mvn clean deploy tomcat:undeploy时,报错: java.lang.NoCl ...

  2. 【struts2】Struts2的异常处理

    在Action中execute方法声明为:public String execute() throws Exception,这样,Action可以抛出任何Exception. 1)自己实现异常处理 我 ...

  3. numpy ndarray可用的常规函数

    该部分位于numpy - ref - 1.14.5中的2.8 available ufuncs 1 数学运算 1.1 元素级加法 add 加法规则: numpy.add(x1, x2, /, out= ...

  4. mysql主从复制配置问题

    一,基本步骤 1,创建在主从数据上都创建复制账号,权限选上super, replication slave , replication master(选上这个可以方便从库变成主库): 2,配置主库和备 ...

  5. Python - 列表解析式/生成器表达式

    列表解析式: [expr for iter_var in iterable if cond_expr] 生成器表达式: (expr for iter_var in iterable if cond_e ...

  6. 一个酷绚的linux 桌面程序 GLX-DOCK (cario-dock)

    记录一个酷绚的linux  桌面程序  GLX-DOCK (cario-dock),支持多种风格的桌面主题. http://glx-dock.org/ 优势: 多个workspaces 方便自由切换 ...

  7. 跟我学SharePoint 2013视频培训课程——签出、签入文档(9)

    课程简介 第9天,怎样在SharePoint 2013中签出.签入文档 视频 SharePoint 2013 交流群 41032413

  8. struts系列:校验(一)XML校验和函数方法校验

    一.jsp示例 <form action="login" method="post"> <div class="form-group ...

  9. jQuery的prop和attr的区别,及判断复选框是否选中

    jQuery的prop和attr的区别 对于HTML元素本身就带有的固有属性,在处理时,使用prop方法. 对于HTML元素我们自己自定义的DOM属性,在处理时,使用attr方法. 参数有区别,att ...

  10. java字符串拼接的几种方式

    1. plus方式 当左右两个量其中有一个为String类型时,用plus方式可将两个量转成字符串并拼接. String a="";int b=0xb;String c=a+b;2 ...