• JAVA课后作业


    课后作业01

    设计思想:1.使用组合数公式计算,先输入两个整数nk,求出n的阶乘,k的阶乘,n-k的阶乘,然后利用公式求出结果。

    程序流程图:

     

    源程序代码:package zuheshu;

    import java.util.Scanner;

    public class zuheshu

    {

    public int jiecheng(int n)

    {

    Scanner s=new Scanner(System.in);

    n=s.nextInt();

    int sum=1;

    for(int i=1;i<=n;i++)

    {

    sum=sum*i;

    }

    return sum;

    }

    public int Zuhe(int k,int n)

    {

    int result;

    int N;

    int K;

    int C=n-k;

    N=jiecheng(n);

    K=jiecheng(k);

    C=jiecheng(C);

    result=N/(K*C);

    return result;

    }

      public void main(String[] args)

      {

      

      int k,n;

      Scanner input=new Scanner(System.in);

      System.out.println("请输入k,n的值:");

      k=input.nextInt();

      n=input.nextInt();

      Zuhe(k,n);

    }

    }

    结果截图:

     

    2.设计思想:利用杨辉三角形的规律,第i行第j个数值为该位置的数的上一行左右两个数之和,求出组合数等于第k+1行,第n+1列的数字。

    源程序代码:import java.util.Scanner;

    public class zuheshu {

    public static void main(String args[])

    {

    Scanner sc=new Scanner(System.in);

    System.out.print("输入n的值:");

    int n=sc.nextInt();

    System.out.print("输入k的值:");

    int k=sc.nextInt();

    int[][]a=new int[n+1][n+1];

    for(int i=0;i<n+1;i++)

    {

    for(int j=0;j<=i;j++)

    {

    if(j==0||j==i)

    {

    a[i][j]=1;

    System.out.print(a[i][j]+"");

    }

    else

    {

    a[i][j]=a[i-1][j-1]+a[i-1][j];

    System.out.print(a[i][j]);

    System.out.print("");

    }

    }

    System.out.println();

    }

    if(n<2||k==1)

    {

    System.out.println("num=1");

    }

    else

    {

    System.out.println("num="+a[n][k-1]+"="+a[n-1][k-2]+"+"+a[n-1][k-1]);

    }

    }

    }

    程序流程图:

     

    结果截图:

    3.设计思想:组合数中,若n=1,则输出结果1,如果不为1,利用递归和公式计算第n-1直至1,最后输出结果。

     源程序代码:import java.util.Scanner;

    public class Digui {

    public static int zuhe(int n,int k)

    {

    if(n<0||k<0||n<k)

    {

    return 0;

    }

    if(n==k)

    {

    return 1;

    }

    if(k==1)

    {

    return n;

    }

    return zuhe(n-1,k)+zuhe(n-1,k-1);

    }

      public static void main(String atgs[])

      {

        Scanner sc=new Scanner(System.in);

    System.out.print("输入n的值:");

    int n=sc.nextInt();

    System.out.print("输入k的值:");

    int k=sc.nextInt();

    System.out.print("result:"+zuhe(n,k));

      }

      

    }

    结果截图:

    课后作业02

    设计思想:该程序需要用递归的算法实现。当A上只有一个盘子时,直接将盘子从A移动到C上,当A上有n个盘子时,需要移动的次数等于2n次方减去1需要先将前n-1个盘子借助C移动到B上,然后将A上的第n个盘子移动到C上,最后将B上的n-1个借助A移动到C上。从第n个到第一个依次递归。

    程序流程图:

     

    Y

    N

    源程序代码:import java.util.Scanner;

    public class Hanoi {

    public void hanoi(int n,char A,char B,char C) {

    if (n == 1){

    move(A,C);      //如果n1,直接从A移动到C

    } else {

    hanoi(n - 1,A,C,B);      //将前n-1个盘子移动到B

    move(A,C);

    hanoi(n - 1,B,A,C);       //B上的n-1个盘子移动到C

    }

    }

    private void move(char A,char C) {

    System.out.println("移动方向:由" + A + "移动到" + C);        //盘子的移动

    }

    public static void main(String[] args) {

    System.out.println("请输入盘子数:");

    Scanner in=new Scanner(System.in);

    int n=in.nextInt();

    Hanoi hanoi = new Hanoi();

    hanoi.hanoi(n,'A','B','C');

    }

    }

    结果截图:

    课后作业03

    设计思想:利用递归解决问题。输入字符串后,首先判断字符串的长度,如果是01,则肯定是回文字符串,否则,判断字符串的第一个字符和最后一个字符是否相同,相同则将第一个和最后一个字符删去,再次判断直至字符串为空,都相同则为回文字符串,否则不是。

    程序流程图:

    Y

    N

     

    Y

    源程序代码:import java.util.Arrays;

    import java.util.Scanner;

    public class RecursionTest {

    public boolean palindromeJudge(String str){

    if(str.length()==1||str.length()==0){

         return true;

    }else if(str.charAt(0)==str.charAt(str.length()-1)){

       

    String strShort=stringCut(str);

        return palindromeJudge(strShort);

    }else{

        return false;

    }

    }

    public static String stringCut(String str){

       

     if(str==null||"".equals(str)){

             

    return "";

         }

           char[] src=str.toCharArray();

         

    char[] dst=Arrays.copyOfRange(src, 1,src.length-1);

          return String.valueOf(dst);

    }

    public static void main(String[] args) {

            RecursionTest test=new RecursionTest();

            System.out.println("请输入一个字符串:");

         Scanner sc=new Scanner(System.in);

         String str=sc.nextLine();

    System.out.println(test.palindromeJudge(str));

           }

    }

    程序截图:

  • 相关阅读:
    python lambda
    Java使用Graphics2D生成公章
    纯前端Html+JavaScript+canvas生成公章
    MySQL 大表优化方案,收藏了细看!
    【全干货】5分钟带你看懂 Docker!
    MySQL 分页优化中的 “ INNER JOIN方式优化分页算法 ” 到底在什么情况下会生效?...
    React-Native iOS真机调试(新版)
    React-Native iOS真机调试(新版)
    React-Native iOS真机调试(新版)
    React-Native iOS真机调试(新版)
  • 原文地址:https://www.cnblogs.com/limengke/p/7664312.html
Copyright © 2020-2023  润新知