小编lje*_*osn的帖子

F#性能:是什么让这段代码变得如此之慢?

这个F#代码试图解决Project Euler问题#58:

let inc = function
| n -> n + 1
let is_prime = function
| 2 -> true
| n when n < 2 || n%2=0-> false 
| n -> 
       [3..2..(int (sqrt (float n)))] 
       |> List.tryFind (fun i -> n%i=0)
       |> Option.isNone
let spir = Seq.initInfinite (fun i -> 
    let n = i%4
    let a = 2 * (i/4 + 1)
    (a*n) + a + (a-1)*(a-1))
let rec accum se p n = 
   match se with …
Run Code Online (Sandbox Code Playgroud)

c++ math performance f# lazy-evaluation

12
推荐指数
2
解决办法
795
查看次数

如何递归传递可变引用?

我正在尝试用 Rust解决这个问题。

这是我的非编译 Rust 代码:

use std::collections::HashMap;

fn main() {
    // initialize HashMap
    let mut fibs: HashMap<u32, u32> = HashMap::new();
    fibs.insert(0, 1);
    fibs.insert(1, 1);
    let mut n = 1;
    let mut sum = 0;
    while fib(n, &mut fibs) < 4000000 {
        sum += if fib(n, &mut fibs) % 2 == 0 {
            fib(n, &mut fibs)
        } else {
            0
        };
        n += 1;
    }
    println!("{}", sum);
}

fn fib(n: u32, fibs: &mut HashMap<u32, u32>) -> u32 {
    if !fibs.contains_key(&n) …
Run Code Online (Sandbox Code Playgroud)

pointers rust

8
推荐指数
1
解决办法
4881
查看次数

Rust 编译器找不到“std”的箱子

我最近从这个站点(Linux 64 位)下载并解压了 Rust 语言。

然后我使用下载中的给定脚本安装了 Rust install.sh

root@kali:~# /root/rust-1.9.0-x86_64-unknown-linux-gnu/install.sh
install: uninstalling component 'rustc'
install: creating uninstall script at /usr/local/lib/rustlib/uninstall.sh
install: installing component 'rustc'
install: installing component 'rust-std-x86_64-unknown-linux-gnu'
install: installing component 'rust-docs'
install: installing component 'cargo'

    Rust is ready to roll.
Run Code Online (Sandbox Code Playgroud)

我正在尝试安装带有货物的板条箱,但我一直遇到此错误:

root@kali:~# cargo install racer
    Updating registry `https://github.com/rust-lang/crates.io-index`
   Compiling winapi v0.2.7
   Compiling bitflags v0.5.0
error: can't find crate for `std` [E0463]
error: aborting due to previous error
Build failed, waiting for other jobs to finish...
error: …
Run Code Online (Sandbox Code Playgroud)

rust rust-cargo

7
推荐指数
1
解决办法
9156
查看次数

元音的子序列

我正在练习面试并在网站上遇到这个问题:

字符串的神奇子序列S是按顺序S包含所有五个元音的子序列.找到字符串最大的魔法子序列的长度S.

例如,如果S = aeeiooua,然后aeiouaeeioou是神奇的子序列,但aeioaeeioua不是.

我是动态编程的初学者,我发现很难想出一个递归的公式.

algorithm dynamic-programming

6
推荐指数
2
解决办法
1万
查看次数

动态规划解法讲解

这就是问题所在:给定块数 n(3 到 200 之间),返回可以建造的不同楼梯的数量。每种类型的楼梯应包含 2 个或更多台阶。不允许有两个台阶处于相同高度 - 每个台阶必须低于前一个台阶。所有台阶必须至少包含一块砖块。台阶的高度被分类为组成该台阶的砖块的总数。

例如,当N = 3时,您只有1种选择如何建造楼梯,第一步的高度为2,第二步的高度为1:(#表示一块砖)

#
## 
21
Run Code Online (Sandbox Code Playgroud)

当 N = 4 时,你仍然只有 1 个楼梯选择:

#
#
##
31
Run Code Online (Sandbox Code Playgroud)

但是当 N = 5 时,有两种方法可以用给定的砖块建造楼梯。两个楼梯的高度可以为 (4, 1) 或 (3, 2),如下所示:

#
#
#
##
41

#
##
##
32
Run Code Online (Sandbox Code Playgroud)

我在网上找到了解决方案,但是我不太直观地理解动态规划的解决方案。

public class Answer {

    static int[][] p = new int[201][201];

    public static void fillP() {
        p[1][1] = 1;
        p[2][2] = 1;

        for (int w = 3; w < 201 ; w++) {
            for (int …
Run Code Online (Sandbox Code Playgroud)

java algorithm memoization dynamic-programming

3
推荐指数
1
解决办法
2421
查看次数

Clojure 可变性:O(1) 性能更新向量

在Java中,让我们说我有一个整数数组:int[] a = {1, 2, 3, 4, 5};。如果我想更改数组中的某个元素,可以通过更改内存中某个地址处的数据来实现:a[2] = 9;=> {1, 2, 9, 4, 5}

在Clojure中,我能有一个向量:(def a [1 2 3 4 5])。如何在保证最坏情况时间复杂度为 O(1) 的情况下更改向量中某个位置的元素?我读过该assoc关键字的平均时间复杂度为 O(1),但这不是我要找的。另外,我查看了瞬态向量,但我还没有找到一个很好的简单示例来更新 O(1) 中的向量。

performance functional-programming vector clojure time-complexity

1
推荐指数
1
解决办法
663
查看次数