我有这个程序
//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)中运行
我应该通过动态编程减少运行时间,但不理解这个概念.
只是要求在正确的方向上轻推.
我在大学项目中对TPIN验证的要求很低,要求是,我们不应该允许用户在下面的场景中设置他的TPIN.
对于第三个我的想法是将数字除以11并检查提醒..
任何想法plz ..
public class Validate
{
public static void main(String[] args)
{
int iTpin = Integer.parseInt(args[0]); // Converted string to int
System.out.println("The entered TPIN is:"+iTpin);
boolean flag = validate(iTpin);
if (flag== true)
System.out.println("The entered TPIN is valid");
else
System.out.println("The entered TPIN is Invalid");
}
public static boolean validate(int passedTpin)
{
if (passedTpin == 0)
return false;
else if ( passedTpin%11 == 0)
return false;
else
return true;
}
}
Run Code Online (Sandbox Code Playgroud)
最后创建了数字序列的代码.它可能对其他人有用
private static boolean containsRepetitiveDigits(String tpin) …Run Code Online (Sandbox Code Playgroud) 我正在做一个家庭作业,我必须手动优化嵌套循环(我的程序将在禁用优化的情况下编译).分配的目标是在不到6秒的时间内运行整个程序(额外的功劳少于4.5秒).
我只允许更改一小段代码,起点是这样的:
for (j=0; j < ARRAY_SIZE; j++) {
sum += array[j];
}
Run Code Online (Sandbox Code Playgroud)
哪里ARRAY_SIZE是9973.这个循环被包含在运行20万次到另一个循环中.此特定版本在16秒内运行.
到目前为止我所做的是更改实现以展开循环并使用指针作为我的迭代器:
(这些声明不超过200,000次)
register int unroll_length = 16;
register int *unroll_end = array + (ARRAY_SIZE - (ARRAY_SIZE % unroll_length));
register int *end = array + (ARRAY_SIZE -1);
register int *curr_end;
curr_end = end;
while (unroll_end != curr_end) {
sum += *curr_end;
curr_end--;
}
do {
sum += *curr_end + *(curr_end-1) + *(curr_end-2) + *(curr_end-3) +
*(curr_end-4) + *(curr_end-5) + *(curr_end-6) + *(curr_end-7) +
*(curr_end-8) + …Run Code Online (Sandbox Code Playgroud) 我已经完成了一项家庭作业,我需要创建一个验证码来登录"评论"部分.
我有验证码工作正常,没问题.我们的任务还包括对验证码的失败尝试进行计数.没问题.
这是我的问题.我们被告知允许用户尝试他或她希望的次数,但是,如果他们在30秒限制内失败5次,他们将被锁定3分钟.
我理解如何跟踪5次错过的尝试,但是你如何跟踪这个尝试的时间?如果用户在15秒内尝试了4次,然后等待了一分钟(或更少,显然),则重置时钟,并且还有5次尝试.此外,如果他们尝试两次并等待30秒,尝试将再次尝试.
我是否需要设置时间cookie,辅助计数cookie(与原始计数cookie一起使用),并跟踪辅助计数器的开始并查看该计数器是否增加到5?你会怎么做?
编辑:
不得不道歉,显然我对自己的情况并不完全清楚.在这个家庭作业中,严格规定我们必须使用cookie来完成这项任务.我们目前没有考虑最佳实践或安全性,教师只是希望我们对cookie感到满意.不幸的是,会话对我来说不是一个选项,我必须使用cookies.
作为两个正整数之间的单个运算,我们理解将其中一个数乘以某个素数或将其除以(假设它可以除以该素数而没有余数).表示为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)对于非素数,我们检查我们在其因子的集合或乘积中是否有任何因子
不过,这就是我所能推断的.最糟糕的是,我知道这种算法运行并检查所有可能性需要永恒...你能不能试着帮我吧?该怎么做?
所以我需要一些帮助来找到最小生成树的方法.假设我有一个邻接列表形式的图表:
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算法找出如何实现这一目标.
我在css中找到了这些符号:
.nav li ul li a [class*="icol-"] { opacity: 0.5; filter: alpha(opacity=50); padding-top: 4px; }
.secNav .chzn-container { width: 100%!important; max-width: 100%; }
Run Code Online (Sandbox Code Playgroud)
标志*前的含义是什么=?使用!符号时是评论吗?
我认为这会创建长度为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) 我想使用我自定义的列表实现列表的常规应用实例:
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向我展示如何获得奖励积分,但这似乎更加困难。