zoukankan      html  css  js  c++  java
  • 第二次作业

    课程作业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));
    }

    }

    程序结果截图:

  • 相关阅读:
    poj 3321 Apple Tree
    hdu 1520 Anniversary party
    Light OJ 1089 Points in Segments (II)
    Timus 1018 Binary Apple Tree
    zoj 3299 Fall the Brick
    HFUT 1287 法默尔的农场
    Codeforces 159C String Manipulation 1.0
    GraphQL + React Apollo + React Hook 大型项目实战(32 个视频)
    使用 TypeScript & mocha & chai 写测试代码实战(17 个视频)
    GraphQL + React Apollo + React Hook + Express + Mongodb 大型前后端分离项目实战之后端(19 个视频)
  • 原文地址:https://www.cnblogs.com/andibier/p/7660297.html
Copyright © 2011-2022 走看看