zoukankan      html  css  js  c++  java
  • 02-方法

    一、

    1。(1)设计思想:

       先利用递归写出求阶乘的函数,然后调用这个函数求出组合数。

    (2)程序流程图:

    (3)程序源码:

     1 //信1605-1 康旭阳  20163608
     2 import java.util.Scanner;
     3 public class text1_1 {
     4     public static void main (String[] args){
     5         int k=0,n=0,C=0,d=0;
     6         Scanner input=new Scanner (System.in);
     7         System.out.println("请分别输入n和k:");
     8         n=input.nextInt();
     9         k=input.nextInt();
    10         if (k>n){
    11             System.out.println("输入错误!");
    12             return;
    13         }
    14         C=jiecheng(n)/(jiecheng(k)*(jiecheng(n-k)));
    15         d=jiecheng(k)*(jiecheng(n-k));
    16         C=jiecheng(n)/d;
    17         System.out.println("该组合数的结果为:"+C);
    18     }
    19     public static int jiecheng(int a){
    20         int b=0;
    21         if (a==1)
    22             b=1;
    23         else
    24             b=a*jiecheng(a-1);
    25         return b;
    26         }
    27 }

    (4)结果截图:

    2。(1)设计思想:

    定义一个二维数组Y存储杨辉三角形,循环赋值构造杨辉三角形:Y[i][0] = 1,Y[i][i] = 1,(i = 0,1,2……n),其余每个Y[i][j] = Y[i - 1][j - 1] + Y[i - 1][j]。则C(n,k)就等于Y[n][k]。

    (2)程序流程图:

    (3)程序源码:

     1 //信1605-1 康旭阳 20163608
     2 import java.util.Scanner;
     3 public class text1_2 {
     4     public static void main(String[] args){
     5         System.out.println("请分别输入n和k:");
     6         Scanner input=new Scanner(System.in);
     7         int n=input.nextInt();
     8         int k=input.nextInt();
     9         System.out.println("该组合数的结果为:"+T(n,k));
    10     }
    11     public static int T(int n,int k){
    12         int[][]Y=new int [n+1][n+1];
    13         Y[0][0]=1;
    14         for(int i=0;i<n+1;i++)
    15         {
    16             Y[i][0]=1;
    17             Y[i][i]=1;
    18         }
    19         for (int i=2;i<n+1;i++)
    20         {
    21             for(int j=1;j<i;j++)
    22             {
    23                 Y[i][j]=Y[i-1][j-1]+Y[i-1][j];
    24             }
    25         }
    26         return Y[n][k];
    27     }
    28 }

    (4)结果截图:

     3。(1)设计思路:

    按照所给公式用递推的方式表示,然后输出n和k求值。

    (2)程序流程图:

    (3)程序源码:

     1 //信1605-1 康旭阳  20163608
     2 import java.util.Scanner;
     3 public class text1_3 {
     4     public static void main (String[] args){
     5         Scanner input=new Scanner(System.in);
     6         System.out.println("请分别输入n和k");
     7         int n=input.nextInt();
     8         int k=input.nextInt();
     9         if (k>(n+1)){
    10             System.out.println("输入错误!");
    11             return;
    12             }
    13         else
    14             System.out.println("该组合数的结果为:"+zuheshu(n,k));
    15         }
    16     public static int zuheshu(int n,int k){
    17         int C=0;
    18         if (k==0||(n+1)==k)
    19             C=1;
    20         else
    21             C=zuheshu(n-1,k-1)+zuheshu(n-1,k);
    22         return C;
    23     }
    24 
    25 }

    (4)结果截图:

    二、

    (1)设计思路:

    当盘子的个数为1时,直接从柱子1移动到柱子3;

    n>1时,可将其分为三个步骤:

    (1)将上面n-1个盘子从柱子1移到柱子2上。

    (2)将剩下的一个盘子从柱子1座移到柱子3上。

    (3)将柱子2上的n-1个盘子从柱子2移动到柱子3上。

    (2)程序流程图:

    (3)程序源码:

     1 //信1605-1 康旭阳  20163608
     2 import java.util.Scanner;
     3 public class text2 {
     4     public static void main (String[] srgs){
     5         Scanner input=new Scanner (System.in);
     6         System.out.println("请输入塔的层数:");
     7         int num=input.nextInt();
     8         final int zhuzi1=1,zhuzi2=2,zhuzi3=3;
     9         yidong(num,zhuzi1,zhuzi3,zhuzi2);
    10     }
    11     public static void yidong(int num,int zhuzi1,int zhuzi3,int zhuzi2){
    12         if(num==1)
    13             System.out.println(zhuzi1+"移动至"+zhuzi3);
    14         else{
    15             yidong(num-1,zhuzi1,zhuzi2,zhuzi3);
    16             System.out.println(zhuzi1+"移动至"+zhuzi3);
    17             yidong(num-1,zhuzi2,zhuzi3,zhuzi1);
    18             }
    19         }
    20 }

    (4)结果截图:

    三、

    (1)设计思路:

    首先将字符串的第一个和最后一个字符做比较,然后利用递归,再将剩下的字符串的第一个和最后一个字符作比较,直到字符串长度为1或者0。

    (2)程序流程图:

     (3)程序源码:

     1 //信1605-1  康旭阳  20163608
     2 import java.util.Scanner;
     3 public class text3 {
     4     public static void main(String[] args){
     5         Scanner input=new Scanner (System.in);
     6         System.out.println("请输入一个字符串:");
     7         String zfc=input.next();
     8         boolean a=huiwen(zfc);
     9         if (a==true)
    10             System.out.println("该字符串回文。");
    11         else
    12             System.out.println("该字符串不回文。");
    13     }
    14     public static boolean huiwen(String zfc){
    15         int m=zfc.length();
    16         char a=zfc.charAt(0);
    17         char b=zfc.charAt(m-1);
    18         if(m==0||m==1)
    19             return true;
    20         if(a==b)
    21             return huiwen(zfc.substring(1,m-1));
    22         else
    23             return false;
    24     }
    25 
    26 }

    (4)结果截图:

  • 相关阅读:
    nodeJs小练习之爬取北京昌平区房价
    2016,加油,奋斗
    1339 字符串王国的种族
    1333 明信片和照片
    1316 你能知道这是几进制数?
    1309 简化版九宫格
    1295 爱翻译
    1288 幸运转盘(一)
    1287 孙武练兵
    1284 喜羊羊的新年礼物
  • 原文地址:https://www.cnblogs.com/kangxy/p/7663911.html
Copyright © 2011-2022 走看看