• 第二次作业


    课程作业01:

    1.使用计算机计算组合数:

    (1).使用组合数公式n!来计算

    设计思想:利用递归把n的阶乘求出来,再利用组合数的公式求出组合数。

    程序流程图:

    源程序代码:

    import java.util.Scanner;

    import org.omg.CORBA.PUBLIC_MEMBER;

    public class Comninanum {
    public int f(int n)//阶乘
    {
    int sum;
    if(n!=1)
    {
    sum=f(n-1)*n;
    }
    else sum=1;
    return sum;
    }
    public void calculate(int n,int k)
    {

    int result;
    result=f(n)/(f(k)*f(n-k));
    System.out.println("该组合数的结果为:"+result);

    }
    public static void main(String[] args) {
    // TODO 自动生成的方法存根
    Comninanum com=new Comninanum();
    int n,k;
    Scanner cin=new Scanner(System.in);
    System.out.println("输入底数:");
    n=cin.nextInt();
    System.out.println("输入阶数:");
    k=cin.nextInt();
    com.calculate(n, k);

    }

    }

     程序结果截图:

    (2).使用递推的方法用杨辉三角计算:

    程序设计思想:计算出杨辉三角每个位置的值,利用组合数的公式,求出组合数。

    程序流程图:

    源程序代码:

    import java.util.Scanner;

    public class Zuoye2 {

    public static void main(String[] args) {
    // TODO 自动生成的方法存根
    int n,k;
    Scanner cin=new Scanner(System.in);
    System.out.println("输入底数n:");
    n=cin.nextInt();
    System.out.println("输入阶数k:");
    k=cin.nextInt();
    int [][]f=new int[27][27];
    f[0][0]=1;
    for(int i=1;i<=24;i++)
    {
    for(int j=1;j<=i;j++)
    {
    f[i][j]=f[i-1][j-1]+f[i-1][j];
    }
    }
    System.out.println("组合数的值为:"+f[n+1][k+1]);
    }

    }

    程序结果截图:

    (3).利用递归的方法用组合数递推公式计算

    程序设计思想:借助组合数公式,编写一个函数求出组合数。

    程序流程图:

     源程序代码:

    package zuoye3;

    import java.util.Scanner;

    public class Zuoye3 {
    public static int zuhe(int n,int k)
    {
    if(k==0) return 1;
    else if(n==1) return 1;
    else if(n==k) return 1;
    else return(zuhe(n-1,k-1)+zuhe(n-1,k));
    }
    public static void main(String[] args) {
    // TODO 自动生成的方法存根
    int n,k;
    Scanner cin=new Scanner(System.in);
    System.out.println("输入底数n:");
    n=cin.nextInt();
    System.out.println("输入阶数k:");
    k=cin.nextInt();
    System.out.println("组合数的结果为:"+zuhe(n,k));
    }

    }

    程序结果截图:

    2.汉诺塔问题

    程序设计思想:汉诺塔问题可以分为两类人去做,一类去把第n个圆盘搬到要放的为止,第二类人把n-1个圆盘先搬到辅助的塔,再搬到要放的塔。利用递归实现

    程序设计流程图:

    源程序代码:

    import java.util.Scanner;

    public class Zuoye4 {
    public static void han(int n,String one,String two,String three)
    {
    if(n==1)
    move(n,one,three);

    else
    {
    han(n-1,one,three,two);
    move(n,one,three);
    han(n-1,two,one,three);
    }
    }
    public static void move(int n,String peg1,String peg2)
    {
    System.out.println("第"+n+"个圆盘:"+peg1+"->"+peg2);
    }
    public static void main(String[] args) {
    // TODO 自动生成的方法存根
    int n;
    Scanner cin=new Scanner(System.in);
    System.out.println("输入圆盘的个数:");
    n=cin.nextInt();
    han(n,"peg1","peg2","peg3");
    }

    }

    程序结果截图:

    3.判断回文字符

    程序设计思想:判断是否是回文,先判断第一个和最后一个字符是否相等,再判断第二个和倒数第二个字符,依次递归;另外,如果只有一个字符和0个字符,那么也是回文的。

    程序设计流程图:

    源程序代码:

    package zuoye4;

    import java.util.Scanner;

    public class Huiwen {
    public static boolean huiwen(String s,int i,int j)
    {
    if(i==j) return true;
    else return(s.charAt(i)==s.charAt(j)&&huiwen(s,i+1,j-1));
    }
    public static void main(String[] args) {
    // TODO 自动生成的方法存根
    String s;
    int i,j;
    System.out.println("输入字符串:");
    Scanner cin=new Scanner(System.in);
    s=cin.nextLine();
    i=0;
    j=s.length()-1;
    System.out.println("是否是回文:"+huiwen(s,i,j));
    }

    }

    程序结果截图:

  • 相关阅读:
    js判断浏览器类型
    如何编译JAR包
    Android + Eclipse + PhoneGap 3.4 安卓最新环境配置,部分资料整合网上资料,已成功安装.
    QQ互联简单例子,七彩花都提供
    Android + Eclipse + PhoneGap 2.9.0 安卓最新环境配置,部分资料整合网上资料,已成功安装.
    碎片化知识整理
    今天开始记录我每天的学习过程,补上昨晚的的笔记
    Appium 1.6.5安装环境配置 iOS篇
    Appium1.6.4-beta iPhone真机控件获取 app-inspector
    Appium1.6.4-beta 模拟器控件获取 App-inspector
  • 原文地址:https://www.cnblogs.com/andibier/p/7660297.html
Copyright © 2020-2023  润新知