zoukankan      html  css  js  c++  java
  • 课程作业 02 2017.10.13

    课后作业1

    使用计算机计算组合数:

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

     

    设计思想:通过for循环分别求得组合数中的的分子分母各项求出,再求组合数

    程序流程图:

    源程序代码:

    //20163591 陈天时 信1605-3

    import java.util.Scanner;

    public class zuheshu

    {

        @SuppressWarnings("unused")

        public static void main(String[] args)

        {

           Scanner input=new Scanner(System.in);

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

           int n=input.nextInt();

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

           int k=input.nextInt();

           int a=1,b=1,c=1,C;

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

           {

               a=a*i;

           }

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

           {

               b=b*i;

           }

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

           {

               c=c*i;

           }

           C=a/(b*c);

           System.out.println("C="+C);

        }

    }

    结果截图:

     

    2)使用递推的方法用杨辉三角形计算

    1设计思想:通过构建杨辉三角来寻找组合数,

    2程序流程图

     

    3源程序代码:

    //20163591 陈天时 信1605-3

    import java.util.Scanner;

    public class yanghuisanjiao

    {

        public static void main(String[] args)

        {

           @SuppressWarnings("resource")

           Scanner input=new Scanner(System.in);

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

           int n=input.nextInt();

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

           int k=input.nextInt();

           int [][] yhsj=new int [30][30];

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

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

               {

                  yhsj[i][0]=1;

                  if(j>0&&j<i)

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

                  else if(i==j)

                      yhsj[i][j]=1;

               }

           System.out.print("C="+yhsj[n][k]);

        }

    }

     

    4结果截图

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

    1设计思想:用递归函数,递归求解组合数

    2程序流程图:

    3源程序代码:

    //20163591 陈天时 信1605-3

    import java.util.Scanner;

    public class digui

    {

        static int fangfa(int n, int k)

        {

           if(k==n||k==0)

               return 1;

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

               return 0;

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

        }

        public static void main(String[] args)

        {

           @SuppressWarnings("unused")

           Scanner input=new Scanner(System.in);

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

           int n=input.nextInt();

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

           int k=input.nextInt();

           System.out.println("C="+fangfa(n,k));

        }

    }

    4结果截图:

    课后作业2

    递归编程解决汉诺塔问题

    源程序代码:

    //20163591 陈天时 信1605-3

    import java.util.Scanner;

    public class hannuota

    {

        public static void hnt(int n,char a,char b,char c)

        {

           if(n==1)

           {

               System.out.println("1号盘子从"+a+"移动到"+b);

               return;

           }

           hnt(n-1,a,c,b);

           System.out.println(+n+"号盘子从"+a+"移动到"+c);

           hnt(n-1,c,b,a);

        }

        public static void main(String[] args)

        {

           @SuppressWarnings({ "unused", "resource" })

           Scanner input=new Scanner(System.in);

           hnt(4,'A','B','C');

        }

    }

    课后作业3

    使用递归方式判断某个字串是否是回文( palindrome

    1设计思想:通过eclipse中自带的类来将字符串倒过来,再构建一个新的字符串将字符串填入,再和原来的一一进行比较。

    2程序流程图

    3源程序代码:

    //20163591 陈天时 信1605-3

    import java.util.Scanner;

    public class palindrome

    {

        public static void main(String[] args)

        {

           Scanner input=new Scanner(System.in);

           String str="";

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

           Scanner in=new Scanner(System.in);

           str=in.nextLine();

           StringBuffer dao=new StringBuffer(str);

           dao.reverse();

           int n=0;

           for(int i=0;i<str.length();i++)

           {

               if(str.charAt(i)==dao.charAt(i))

                  n++;

           }

           if(n==str.length())

               System.out.println(str+"是回文字符串");

           else

               System.out.println(str+"不是回文字符串");

        }

    }

    4结果截图

  • 相关阅读:
    014
    013
    012
    011
    009
    009
    008
    适用于可迭代对象的通用函数
    ubuntu中将py3设置为默认的python
    linux系统下安装gtk
  • 原文地址:https://www.cnblogs.com/cts1234/p/7659466.html
Copyright © 2011-2022 走看看