我有这个程序
//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)中运行
我应该通过动态编程减少运行时间,但不理解这个概念.
只是要求在正确的方向上轻推.
我有一段我不确定的作业代码.我有信心我知道答案,但我只是想与社区仔细检查,因为我忘记了一些事情.标题基本上是安全编码,问题只是解释结果.
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来进行签名,因此被视为负数,因此终止循环.因此,它不会写入未分配的内存,因此会导致整数溢出,而是会违反数据类型,从而导致循环终止.
我很确定这是原因,但我只想仔细检查.任何意见?
作为两个正整数之间的单个运算,我们理解将其中一个数乘以某个素数或将其除以(假设它可以除以该素数而没有余数).表示为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)对于非素数,我们检查我们在其因子的集合或乘积中是否有任何因子
不过,这就是我所能推断的.最糟糕的是,我知道这种算法运行并检查所有可能性需要永恒...你能不能试着帮我吧?该怎么做?
我要分析的代码片段如下:
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),但我想的越多,它的意义就越小.任何指导都将非常感谢.
所以我需要一些帮助来找到最小生成树的方法.假设我有一个邻接列表形式的图表:
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算法找出如何实现这一目标.
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行为?
我认为这会创建长度为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) 以下代码未通过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) 我想使用我自定义的列表实现列表的常规应用实例:
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) 我想用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向我展示如何获得奖励积分,但这似乎更加困难。