小编The*_*Cat的帖子

通过动态编程加速功能

我有这个程序

//h is our N
    static int g=0;
    int fun(int h){
        if(h<=0){
                  g++;
                  return g;
                  }
    return g+fun(h-1)+fun(h-4);
    }
Run Code Online (Sandbox Code Playgroud)

是否可以使用动态编程加快速度?

我发现这个函数在O(2 ^ n)中运行

我应该通过动态编程减少运行时间,但不理解这个概念.

只是要求在正确的方向上轻推.

c++ dynamic-programming

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

关于代码示例分析的反馈(安全编码)

我有一段我不确定的作业代码.我有信心我知道答案,但我只是想与社区仔细检查,因为我忘记了一些事情.标题基本上是安全编码,问题只是解释结果.

int main() {
   unsigned int i = 1;
   unsigned int c = 1;
   while (i > 0) {
     i = i*2;
     c++;
   }
   printf("%d\n", c);
   return 0;
}
Run Code Online (Sandbox Code Playgroud)

我的理由是这样的:

乍一看,你可以想象代码将永远运行,考虑到它被初始化为正值并且不断增加.这当然是错误的,因为最终这个值会变得如此之大,会导致整数溢出.这反过来也不完全正确,因为最终它会强制变量'i'通过将最后一位设为1来进行签名,因此被视为负数,因此终止循环.因此,它不会写入未分配的内存,因此会导致整数溢出,而是会违反数据类型,从而导致循环终止.

我很确定这是原因,但我只想仔细检查.任何意见?

c types loops integer-overflow

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

整数距离

作为两个正整数之间的单个运算,我们理解将其中一个数乘以某个素数或将其除以(假设它可以除以该素数而没有余数).表示为d(a,b)的a和b之间的距离是将数字a变换为数字b所需的最小操作量.例如,d(69,42)= 3.

请记住,我们的函数d确实具有距离的特征 - 对于任何正的整数a,b和c,我们得到:

a)d(a,a)== 0

b)d(a,b)== d(b,a)

c)满足三角形d(a,b)+ d(b,c)> = d(a,c)的不等式.

您将获得一系列正整数a_1,a_2,...,a_n.对于它们的每个a_i输出这样的a_j(j!= i),d(a_i,a_j)尽可能低.例如,长度为6:{1,2,3,4,5,6}的序列应输出{2,1,1,2,1,2}.

这对我来说真的很难.我认为有用的是:

a)如果a_i是素数,我们不能做任何小于a_i的东西(除非它是1)所以唯一的操作是乘法.因此,如果我们在集合中有1,则对于每个素数d(this_number,1)是最低的.

b)同样,1 d(1,any_prime_number)是最低的.

c)对于非素数,我们检查我们在其因子的集合或乘积中是否有任何因子

不过,这就是我所能推断的.最糟糕的是,我知道这种算法运行并检查所有可能性需要永恒...你能不能试着帮我吧?该怎么做?

algorithm numbers

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

三个相互依赖的嵌套for循环的渐近分析

我要分析的代码片段如下:

int sum = 0;
for (int i = 0; i < n; i++)
   for (int j = 0; j < i * i; j++)
      for (int k = 0; k < j; k++)
         sum++;
Run Code Online (Sandbox Code Playgroud)

我知道第一个循环是O(n),但这就是我所知道的.我认为第二个循环可能是O(n ^ 2),但我想的越多,它的意义就越小.任何指导都将非常感谢.

complexity-theory big-o for-loop nested

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

使用Prims算法从邻接列表中查找最小生成树,其中邻接列表在字符串数组中

所以我需要一些帮助来找到最小生成树的方法.假设我有一个邻接列表形式的图表:

A 2 B 12 I 25
B 3 C 10 H 40 I 8
C 2 D 18 G 55
D 1 E 44
E 2 F 60 G 38
F 0
G 1 H 35
H 1 I 35
Run Code Online (Sandbox Code Playgroud)

第一个字母告诉您正在查看哪个节点,该数字表示与其他任何节点的连接数.例如,A有两个连接 - 一个连接到B和I.之后,字母后面的数字只表示边的权重.B的重量为12,我的重量为25.所以我原计划将这整个事物表示为一个名为String的数组Graph[8].每一行都是数组中的不同插槽.我无法通过Prims或Kruskalls算法找出如何实现这一目标.

java algorithm minimum-spanning-tree prims-algorithm

5
推荐指数
2
解决办法
4671
查看次数

Python wilcoxon:不等N.

Rs wilcox.test可以采用不同的长度向量,但wilcoxon scipy.stats不能:我收到unequal N错误消息.

from scipy.stats import wilcoxon
wilcoxon(range(10), range(12))
Run Code Online (Sandbox Code Playgroud)

有没有办法在Python中获得Rs行为?

python statistics scipy

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

如何为递归数据类型创建任意实例?

我认为这会创建长度为3的任意列表,但是如何创建任意长度的列表?

import Test.QuickCheck

data List a =
  Nil
  | Cons a (List a)
  deriving (Eq, Show)

instance Arbitrary a  => Arbitrary (List a) where
  arbitrary = do
    a <- arbitrary
    a' <- arbitrary
    a'' <- arbitrary
    return $ (Cons a (Cons a' (Cons a'' (Nil))))
Run Code Online (Sandbox Code Playgroud)

haskell

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

为什么列表中的Traversable实例不正确?

以下代码未通过checkers测试可遍历.我很欣赏它失败的原因,而不仅仅是如何修复它.

import Test.QuickCheck
import Test.QuickCheck.Checkers
import Test.QuickCheck.Classes

data List a =
  Nil
  | Cons a (List a)
    deriving (Show, Eq, Ord)

instance Functor List where
  fmap _ Nil = Nil
  fmap f (Cons x xs) = (Cons (f x) (fmap f xs))

instance Foldable List where
  foldr f z (Cons x xs) = f x z
  foldr _ z Nil = z

instance Traversable List where
  traverse f Nil = pure Nil
  -- traverse f (Cons x Nil) = Cons …
Run Code Online (Sandbox Code Playgroud)

haskell traversable

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

List的应用实例在使用QuickCheck/Checkers的组合法测试中永远运行

我想使用我自定义的列表实现列表的常规应用实例:

import Control.Monad

import Test.QuickCheck
import Test.QuickCheck.Checkers
import Test.QuickCheck.Classes

data List a =
  Nil
  | Cons a (List a)
  deriving (Eq, Ord, Show)


instance Functor List where
  fmap f (Cons x xs) = Cons (f x) (fmap f xs)
  fmap f Nil = Nil


instance Applicative List where
  pure x = Cons x Nil
  (<*>) Nil _ = Nil
  (<*>) _ Nil = Nil
  (<*>) (Cons f fs) xs = (+++) (fmap f xs) (fs <*> xs)

(+++) :: List …
Run Code Online (Sandbox Code Playgroud)

haskell list applicative

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

如何使用foldr(或foldMap)实现最小值?

我想用foldr或foldMap实现最小值。根据练习,它应具有以下定义:

mini :: (Foldable t, Ord a) => t a -> Maybe a -- named "mini" to avoid name clash
Run Code Online (Sandbox Code Playgroud)

听起来很简单,但是我不知道可以在下面的X中添加什么才能使其起作用。请帮忙?

mini xs = Just (foldr min X xs)
Run Code Online (Sandbox Code Playgroud)

而且,您也可以通过foldMap向我展示如何获得奖励积分,但这似乎更加困难。

haskell minimum foldable

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