首页 > 编程语言 >算法篇---java算法应用

算法篇---java算法应用

时间:2023-10-21 17:00:11浏览次数:33  
标签:f1 java -- System --- 算法 public out

算法篇---java算法应用

 

算法应用之百钱买白鸡

(程序员副业--编程学习--业务交流--公众号: 匠心程序定制) 

 

案列说明:主要内容是:公鸡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');

    }
}
复制代码

运行结果:

 

(程序员副业--编程学习--业务交流--公众号: 匠心程序定制) 

 

转载自:http://www.cnblogs.com/oumyye/

 

标签:f1,java,--,System,---,算法,public,out
From: https://www.cnblogs.com/dalaoban/p/17779215.html

相关文章

  • Java基础 捕获异常 灵魂四问
    一、如果try中没有遇到问题,怎么执行?答:会把try里面所有的代码全部执行完毕,不会执行catch里面的代码。只有当出现了异常才会执行catch里面的代码 二、如果try中可能会遇到多个问题,怎么执行?答:会写多个catch与之对应。如果我们要捕获多个异常,这些异常中如果存在父子......
  • 手撕Vue-实现事件相关指令
    经过上一篇文章的学习,实现了界面驱动数据更新,接下来实现一下其它相关的指令,比如事件相关的指令,v-on这个指令的使用频率还是很高的,所以我们先来实现这个指令。v-on的作用是什么,是不是可以给某一个元素绑定一个事件。紧接着了解了v-on的作用之后,我在example.html的结构代码......
  • 无涯教程-AWK - 运算符
    像其他编程语言一样,AWK也提供了大量的运算符。本章通过适当的示例说明AWK运算符。S.No.Operators&描述1ArithmeticOperatorsAWK支持以下算术运算符。2IncrementandDecrementOperatorsAWK支持以下递增和递减运算符。3AssignmentOperatorsAWK支持以下赋值运算......
  • javaweb
    web.xml配置文件<?xmlversion="1.0"encoding="UTF-8"?><web-appxmlns="http://java.sun.com/xml/ns/j2ee"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://java......
  • 1.NCC算法实现及其优化[基础实现篇]
    NCC算法实现及其优化本文将集中探讨一种实现相对简单,效果较好的模板匹配算法(NCC)\[R(x,y)=\frac{\sum_{x',y'}(T'(x',y')\cdotI'(x+x',y+y'))}{\sqrt{\sum_{x',y'}T'(x',y')^2\cdot\sum_{x',y'}I'(x+x&......
  • Matching Network算法概述
    什么是MatchingNetwork1.论文地址:MatchingNetworksforOneShotLearning2.简介:基于MetricLearning部分思想,使用外部记忆来增强网络,提高网络的学习能力。3.创新点借鉴了注意力和外部记忆方面的经验来搭建网络基于meta-learning用task来训练,而不是metric-learning输入......
  • 20211325 2023-2024-1 《信息安全系统设计与实现(上)》第六周学习笔记
    202113252023-2024-1《信息安全系统设计与实现(上)》第六周学习笔记一、任务要求1.自学教材第3章,提交学习笔记(10分),评分标准如下1.知识点归纳以及自己最有收获的内容,选择至少2个知识点利用chatgpt等工具进行苏格拉底挑战,并提交过程截图,提示过程参考下面内容(4分)“我在学***X......
  • 小白学Python - 使用 Django 的天气应用程序
    使用Django的天气应用程序本文中我们将学习如何创建一个使用Django作为后端的天气应用程序。Django提供了一个基于PythonWeb框架的Web框架,允许快速开发和干净、务实的设计。基本设置cdweather启动服务器pythonmanage.pyrunserver要检查服务器是否正在运行,请转至Web......
  • 棋盘覆盖——分治算法的典例
    问题描述在一个\({2^k}\times{2^k}(K\geqslant0)\)个方格组成的棋盘中,恰有一个方格与其他方格不同,称该方格为特殊方格。棋盘覆盖问题要求用图所示的4种不同形状的\(L\)型骨牌覆盖给定棋盘上除特殊方格以外的所有方格,且任何2个\(L\)型骨牌不得重叠覆盖。问题分析算法设计......
  • 循序渐进介绍基于CommunityToolkit.Mvvm 和HandyControl的WPF应用端开发(11) -- 下拉
    在我们开发的前端项目中,往往为了方便,都需对一些控件进行自定义的处理,以便实现快速的数据绑定以及便捷的使用,本篇随笔介绍通过抽取常见字典列表,实现通用的字典类型绑定;以及通过自定义控件的属性处理,实现系统字典内容的快捷绑定的操作。1、下拉列表的数据绑定在我们创建下拉列表的......