zoukankan      html  css  js  c++  java
  • 课后作业

    课程作业01

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

    设计思想:

    通过键盘输入k和n的值,利用已经给出的式子进行计算,先算n!,然后计算k!,然后再计算(n-k)!,最后的结果就是n!/k!*(n-k)!,最后输出结果。

    程序流程图:

     

    源程序代码:

    //赵春辉 信1605-3 20163464 杨辉三角,组合数,阶乘(1)

    import java.util.Scanner;

    public class jiecheng

    {

        static jiecheng h=new jiecheng();

        Scanner sc=new Scanner(System.in);

        public void jisuan()

        {

            int k=sc.nextInt();

            int n=sc.nextInt();

            int result1=1;

            int result2=1;

            int result3=1;

            int result;

            if(k>n)

            {

                System.out.println("输入的有误,n需要大于k请重新输入");

                h.jisuan();

            }

            if(k<=n)

            {

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

                {

                    result1=result1*i;

                }//n!

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

                {

                    result2=result2*i;

                }//k!

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

                {

                    result3=result3*i;

                }

                result=result1/result2*result3;

                    System.out.println("result is"+result);

            }

        }

        public static void main(String args [])

        {

            System.out.println("please enter the k and n:");

            h.jisuan();

        }

    }

    结果截图:

     

     

    02设计思想:

    运用递推的方法,首先先建立一个函数,计算k,n的结果然后再次引用这个函数计算k,n+1的值,就可以了。

    程序流程图:

     

    源程序代码://赵春辉 信1605-3 20163464 杨辉三角,组合数,阶乘(1)

    import java.util.Scanner;

    public class yanghui 

    {

        static yanghui h=new yanghui();

        Scanner sc=new Scanner(System.in);

        public void jisuan(int k,int n)

        {

             k=sc.nextInt();

            n=sc.nextInt();

            int result1=1;

            int result2=1;

            int result3=1;

            int result;

            if(k>n)

            {

                System.out.println("输入的有误,n需要大于k请重新输入");

                h.jisuan(k,n);

            }

            if(k<=n)

            {

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

                {

                    result1=result1*i;

                }//n!

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

                {

                    result2=result2*i;

                }//k!

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

                {

                    result3=result3*i;

                }

                result=result1/result2*result3;

                    System.out.println("result is"+result);

            }

           

        }

        public static void main(String args [])

        {

            System.out.println("please enter the k and n+1:");

            int k = 0;int n=0;

            h.jisuan( k, n);

        }

    }

     

    结果截图:

     

     

    课程作业02

    设计思想:

    这个问题可用递归法解决,并用数学归纳法又个别得出普遍解法: 假设塔座B上有3个圆盘移动到塔座A上: 

    (1)"将塔座B上2个圆盘借助塔座A移动到塔座C上;

    (2)"将塔座B上1个圆盘移动到塔座A上; 

    (3)"将塔座C上2个圆盘借助塔座B移动到塔座A上。

    其中第2步可以直接实现。第1步又可用递归方法分解为:

    1.1"将塔座B上1个圆盘从塔座X移动到塔座A;

    1.2"将塔座B上1个圆盘从塔座X移动到塔座C;

    1.3"将塔座A上1个圆盘从塔座Z移动到塔座C。

    第3步可以分解为:

     3.1 将塔座C上1个圆盘从塔座Y移动到塔座B;

    3.2 将塔座C上1个圆盘从塔座Y移动到塔座A;

    3.3 将塔座B上1个圆盘从塔座X移动到塔座A。

    所以可得到移动3个圆盘的步骤为 B->A,B->C, A->C, B->A, C->B, C->A, B->A。

    程序流程图:

     

    源程序代码:

    //信1605-3  赵春辉  20163464   汉诺塔

    import java.util.Scanner;

    public class hannuota

    {   

        public static void main(String[] args)

        {  Scanner sc=new Scanner(System.in);

        hannuota h = new hannuota(); 

        System.out.println("please enter it's tower");

        int n=sc.nextInt();

            h.solve(n, "a", "b", "c"); 

        } 

        public void solve(int n, String a, String b, String c)

        { 

            if(n == 1)

            { 

                move(n, a, c); 

            }

            else

            { 

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

                move(n, a, c); 

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

            } 

        } 

        public void move(int n, String a, String c)

        { 

            System.out.println(n + " " + a + " -----> " + c); 

        } 

     

    }

     

    结果截图:

     

    课程作业03

    设计思想:

    判断一个字符串是不是回文串,首先要建立数组,将数组的字符串存储在数组中,输入内容以后就要通过循环语句来判断是不是一个回文串,可以用布尔的true和false来判断,在判断的时候就是要判断第一位和最后一位是不是一样,同理要判断第二位和倒数第二位是不是一样,以此类推,一直判断到最后,假如中间判断出不一样以后,直接用break跳出循环,这样就可以判断一个字符串是不是回文串了。

    流程图:

     

                                                               

                                                                                                               

                                                                                                                                     

     

    源程序代码:

    //信1605-3 赵春辉20163464 判断输入的是不是回文串

    import java.io.BufferedReader;

    import java.io.InputStreamReader;

    public class huiwen

    {

         public static void main(String[] args)throws Exception

         {

              String str ="";

              BufferedReader br = new BufferedReader(new InputStreamReader(System.in),256);//创建一个数组;

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

              str = br.readLine();//读取输入的数组内容,存储在数组中

              System.out.println("结果: " + huiwen(str,0,str.length()-1));

         }

         public static boolean huiwen(String s,intstart,intend)

         {

     

             if(start == end) return true;

              if(start > end){

               System.out.println("没有字符串!");

               return false;

          }

          if(s.charAt(start) == s.charAt(end))

          {

                return huiwen(s,start+1,end-1);

          }

          else{

               return false;

          }

         }

     

    }

    结果截图:

     

                                                                     

  • 相关阅读:
    acm常见错误-持续更新
    学习之旅
    快速幂
    写个管理自我的小工具
    Tree构建
    Sql server学习
    asp.net webAPI学习
    AngularJS数据双向绑定
    虚拟机学习
    wps学习
  • 原文地址:https://www.cnblogs.com/zhaochunhui/p/7663698.html
Copyright © 2011-2022 走看看