zoukankan      html  css  js  c++  java
  • 组合数

    一.组合数公式n!计算

    1).程序设计思想

    结合组合数公式实现n!的算法然后进行结果输出就可以啦。

    2.程序设计流程图

     

    3.源程序代码

         import java.util.*;

    public class Combinatorial {

    public static void main(String[] args) {

    Scanner in = new Scanner(System.in

    );

    System.out.print("输入组合数下标n:");

    int n = in.nextInt();

    System.out.print("输入组合数上标k:");

    int k = in.nextInt();

    int C = Jiecheng(n)/(Jiecheng(k)*Jiecheng(n - k));

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

    }

    public static int Jiecheng(int n)

    {

    int s = 0;

    if(n < 0)

    System.out.println("Error!");

    else if(n == 1||n == 0)

    s = 1;

    else

    s = n * Jiecheng(n -1);

    return s;

    }

    }

    (4).结果截图

     

     .   杨辉三角

        1.设计思想

             构建杨辉三角,组合数的结果就相当于杨辉三角中第n+1k列的数。   

    (2).程序设计流程图

                           

        3. 程序代码

            

    import java.util.Scanner;

    public class Yanghui{

    public static void main(String args[])

    {

    Scanner input=new Scanner(System.in);

    int n,k,m;

    System.out.println("输入组合数公式的n,k:");

    n=input.nextInt();

    m=n+1;

    k=input.nextInt();

    int [][]f=new int[27][27];

    f[0][0] = 1;

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

    {

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

    {

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

    }

    }

    System.out.println("结果为"+f[m+1][k+1]);

    }

    }

       4. 结果截图

                                   

    三.使用递归的方法用组合数递推公式计算。

          1.设计思想

             递归组合数,相当于杨辉三角     构建递归函数,n,k相应于杨辉三角的行列

    (2)..程序设计流程图

                

    (3).程序代码

             import java.util.Scanner;

     public class Digui {

    public static void main(String args[])

    {

    Scanner input=new Scanner(System.in);

    int n,k;

    System.out.println("请输入组合数公式的n和k:");

    n=input.nextInt();

    k=input.nextInt();

    System.out.println("组合结果为"+ZuHe(n,k));

    }

    public static long ZuHe(int a,int b)

    {

    if(b==0)return 1;

    else {

    if(a==1)return 1;

    else {

    if(a==b)return 1;

    else 

    {

    return (ZuHe(a-1,b-1)+ZuHe(a-1,b));

           }

         }

       }

     }

    }

    (4).结果截图

                      

    四.汉诺塔问题.

    (1).设计思想

        从主线开始调用函数进行不停的压栈和出栈操作,函数的调用就是将函数的压栈,结束就是出栈。这样就保证啦方法的调用顺序。

    (2).程序设计流程图

                      

    (3)程序代码.

         package Hanoi;

    import java.util.Scanner;

    public class Hanoi

    {

    static int m =0;

    public static void move(int disks,char N,char M)

    {

    System.out.println("第" + (++m) +" 次移动 : " +" 把 "+ disks+" 号圆盘从 " + N +" 移到 " + M);

    }

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

    {

    if(n == 1)

    Hanoi.move(1, A, C);

    else

    {

    hanoi(n - 1, A, C, B);

    Hanoi.move(n, A, C);

    hanoi(n - 1, B, A, C);

    }

    }

    public static void main(String[] args) {

    Scanner imput = new Scanner(System.in);

    char A = 'A';

    char B = 'B';

    char C = 'C';

    System.out.print("请输入圆盘的个数:");

    int disks = imput.nextInt();

    Hanoi.hanoi(disks, A, B, C);

    System.out.println(">>一共移动了" + m + "次");

    imput.close();

    }}

       

    (4).结果截图

                         

    五.回文数判断。

    1.设计思想

        依次进行第一个和最后一个,第二个和倒数第二个的比较若相等则输出true否则输出flase

    (2).程序设计流程图

                

         

    (3).程序代码

          package Palindrome;

    import java.io.BufferedReader;

    import java.io.InputStreamReader;

    public class Palindrome

    {

    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,int start,int end){

    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;

    }

    }

    (4).结果截图

                         

  • 相关阅读:
    软工假期预习作业1
    2号团队-团队任务4:每日立会(汇总)
    2号团队-团队任务4:每日立会(2018-11-26)
    2号团队-团队任务4:每日立会(2018-11-27)
    第二小组首次会议记录
    第二次作业
    自我介绍+课后作业1:准备
    Linux安装redis
    Redis面试题
    Mybatis面试题
  • 原文地址:https://www.cnblogs.com/877612838zzx/p/7664338.html
Copyright © 2011-2022 走看看