TreeviewCopyright © qgao 2021-* all right reserved, powered by aleen42

递归算法

1. FJ的字符串

问题描述
  FJ在沙盘上写了这样一些字符串:
  A1 = “A”
  A2 = “ABA”
  A3 = “ABACABA”
  A4 = “ABACABADABACABA”
  … …
  你能找出其中的规律并写所有的数列AN吗?
输入格式
  仅有一个数:N ≤ 26。
输出格式
  请输出相应的字符串AN,以一个换行符结束。输出中不得含有多余的空格或换行、回车符。
样例输入
3 
样例输出
ABACABA
package 递归算法;

import java.util.Scanner;

public class Step1
{
    public static void main(String[] args){
        Scanner scanner = new Scanner(System.in);
        int n = scanner.nextInt();
        scanner.close();
        System.out.println(fun(n));
    }

    public static String fun(int n){
        if(1 == n){
            return "A";
        }
        return fun(n-1)+(char)('A'+n-1)+fun(n-1);
    }
}

2. Sine之舞

问题描述
  最近FJ为他的奶牛们开设了数学分析课,FJ知道若要学好这门课,必须有一个好的三角函数基本功。所以他准备和奶牛们做一个“Sine之舞”的游戏,寓教于乐,提高奶牛们的计算能力。
  不妨设
  An=sin(1–sin(2+sin(3–sin(4+...sin(n))...)
  Sn=(...(A1+n)A2+n-1)A3+...+2)An+1
  FJ想让奶牛们计算Sn的值,请你帮助FJ打印出Sn的完整表达式,以方便奶牛们做题。
输入格式
  仅有一个数:N<201。
输出格式
  请输出相应的表达式Sn,以一个换行符结束。输出中不得含有多余的空格或换行、回车符。
样例输入
3
样例输出
((sin(1)+3)sin(1–sin(2))+2)sin(1–sin(2+sin(3)))+1
package 递归算法;

import java.util.Scanner;

public class Step2
{
    public static void main(String[] args){
        Scanner scanner = new Scanner(System.in);
        int n = scanner.nextInt();
        scanner.close();
        System.out.println(a(n));
    }

    public static String s(int n){
        int count = n;
        StringBuilder sb = new StringBuilder();
        for(int i = 1;i<=n-1;i++){
            System.out.print("(");
        }
        for(int i = 1;i<=n;i++){
            if(i == 1){
                sb.append(a(i)+"+"+count--);
            }else{
                sb.append(")"+a(i)+"+"+count--);
            }
        }
        return sb.toString();
    }

    public static String a(int n){
        if(1 == n){
            return "sin(1";
        }else if(0 == n%2){
            return a(n-1)+"-sin("+n;
        }else{
            return a(n-1)+"+sin("+n;
        }

    }
}
package 递推算法;

import java.util.Scanner;

public class Step1
{
    public static void main(String[] args){
        Scanner scanner = new Scanner(System.in);
        int n = scanner.nextInt();
        scanner.close();
        System.out.println(s(n));
    }

    public static String s(int n){
        int count = n;
        StringBuilder sb = new StringBuilder();
        for(int i = 1;i<=n-1;i++){
            System.out.print("(");
        }
        for(int i = 1;i<=n;i++){
            if(i == 1){
                sb.append(a(i)+"+"+count--);
            }else{
                sb.append(")"+a(i)+"+"+count--);
            }
        }
        return sb.toString();
    }

    public static String a(int n){
        StringBuilder sb = new StringBuilder();
        for(int i=1;i<=n;i++){
            if(i == 1){
                sb.append("sin("+i);
                continue;
            }else if(i % 2 == 0){
                sb.append("-sin("+i);
            }else{
                sb.append("+sin("+i);
            }
        }
        for(int i=1;i<=n;i++){
            sb.append(")");
        }
        return sb.toString();
    }
}

3. 最长三角形

动态规划

在上面的数字三角形中寻找一条从顶部到底边的路径,使得路径上所经过的数字之和最大。路径上的每一步都只能往左下或 右下走。
只需要求出这个最大和即可,不必给出具体路径。 三角形的行数大于1小于等于100,数字为 0 - 99
    输入格式:
    5      //表示三角形的行数    接下来输入三角形
    7
    3   8
    8   1   0
    2   7   4   4
    4   5   2   6   5
    要求输出最大和
package 递归算法;

import java.util.Scanner;

/*
 * 从递归开始:Step1
 */

public class Step3 {

    private int[][] array ;
    static int n;

    public static void main(String[] args) {
        Step3 step1 = new Step3();
        step1.start();
        System.out.println(step1.MaxSum(1, 1));
    }

    public int MaxSum(int i,int j) {
        if(i == n) {
            return array[i][j];
        }
        return Math.max(MaxSum(i+1, j), MaxSum(i+1, j+1))+array[i][j];
    }

    public void start() {
        Scanner scanner = new Scanner(System.in);
        n = scanner.nextInt();
        array = new int[n+1][n+1];
        for(int i = 1; i <= n;i++) {
            for(int j = 1; j <= i ;j++) {
                array[i][j] = scanner.nextInt();
            }
        }
        scanner.close();
    }
}
Copyright © qgao 2021-* all right reserved,powered by Gitbook该文件修订时间: 2022-07-08 12:24:46

results matching ""

    No results matching ""