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));
    }

    }

    程序结果截图:

  • 相关阅读:
    多线程GCD(二)
    多线程
    Runtime & Runloop
    MTK android 重启测试脚本
    ubuntu samba 配置简介
    Gerrit使用简介
    MTK andorid从底层到上层添加驱动
    MTK GPIO 新增变量配置
    MT6755 使用R63350 IC 出现唤醒概率性闪白,并导致ESD FAIL
    android L版本AAL新架构
  • 原文地址:https://www.cnblogs.com/andibier/p/7660297.html
Copyright © 2011-2022 走看看