IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> Programming Assignment 6: Recursion -> 正文阅读

[Java知识库]Programming Assignment 6: Recursion

Here is the original link

  • TrinomialBrute.java (组合数学中的三项式系数,暴力递归法)
public class TrinomialBrute {

    // Returns the trinomial coefficient T(n, k).
    public static long trinomial(int n, int k)
    {
        if (n == 0 && k == 0)
        {
            return 1;
        }
        if (k < -n || k > n)
        {
            return 0;
        }
        return trinomial(n-1, k-1) + trinomial(n-1, k) + trinomial(n-1, k+1);
    }

    // Takes two integer command-line arguments n and k and prints T(n, k).
    public static void main(String[] args)
    {
        int n = Integer.parseInt(args[0]);
        int k = Integer.parseInt(args[1]);
        StdOut.println(trinomial(n, k));
        for (int i = 0; i < 5; i++)
        {
            for (int j = 0; j < 5; j++)
            {
                StdOut.print(trinomial(i, j) + " ");
            }
            StdOut.println();
        }
    }
}
  • TrinomialDP.java (动态规划求解三项式系数)
public class TrinomialDP {

    // Returns the trinomial coefficient T(n, k).
    public static long trinomial(int n, int k)
    {
        if (n == 0 && k == 0)
        {
            return 1;
        }
        if (k < -n || k > n)
        {
            return 0;
        }
        // 原始数组
        long[] arr = new long[2*n + 1];
        // 辅助数组
        long[] aux = new long[2*n + 1];

        // n表示原始最中间的位置
        arr[n] = 1;
        for (int i = 1; i <= n; i++)
        {
            for (int j = 0; j <= 2*n; j++)
            {
                aux[j] = arr[j];
            }
            aux[n] = arr[n - 1] + arr[n] + arr[n + 1];
            for (int j = 1; j <= i; j++)
            {
                // 防止越界
                if (n - j - 1 < 0)
                {
                    aux[n - j] = 0;
                }
                else
                {
                    aux[n - j] = arr[n - j - 1];
                }
                aux[n - j] += arr[n - j] + arr[n - j + 1];
            }
            for (int j = 1; j <= i; j++)
            {
                // 防止越界
                if (n - j - 1 < 0)
                {
                    aux[n + j] = 0;
                }
                else
                {
                    aux[n + j] = arr[n + j + 1];
                }
                aux[n + j] += arr[n + j - 1] + arr[n + j];
            }
            // 恢复为原来的数组
            for (int j = 0; j <= 2*n; j++)
            {
                arr[j] = aux[j];
            }
        }
        return arr[n + k];
    }

    // Takes two integer command-line arguments n and k and prints T(n, k).
    public static void main(String[] args)
    {
        int n = Integer.parseInt(args[0]);
        int k = Integer.parseInt(args[1]);
        StdOut.println(trinomial(n, k));
    }
}
  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2021-07-24 11:18:43  更:2021-07-24 11:20:18 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/19 10:56:07-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码