Tag: algorithm

dynamic编程和记忆:自下而上和自上而下的方法

我不确定自己是否正确理解了自上而下的方法。 自下而上:是你首先看“小”子问题的地方,然后使用小问题的解决scheme来解决更大的子问题。 自上而下:以自然的方式解决问题,并检查是否已经计算出子问题的解决scheme。 我有点困惑。 有人可以解释吗? 有什么区别?

如何使用背包algorithm来find包中的元素?

在那里我有一个代码,它通过背包algorithm(bin packing NP-hard problem)来计算最优值: int Knapsack::knapsack(std::vector<Item>& items, int W) { size_t n = items.size(); std::vector<std::vector<int> > dp(W + 1, std::vector<int>(n + 1, 0)); for (size_t j = 1; j <= n; j++) { for ( int w = 1; w <= W; w++) { if (items[j-1].getWeight() <= w) { dp[w][j] = std::max(dp[w][j-1], dp[w – items[j-1].getWeight()][j-1] […]

C的rand()使用了哪些常用algorithm?

我知道C规范没有给出关于rand()的具体实现的任何规范。 在不同的主要平台上通常使用哪些不同的algorithm? 他们有什么不同?

如何有效地生成0和上界N之间的K个非重复整数列表

这个问题给出了所有必要的数据:在给定区间[0,N-1]内生成一个K个非重复整数序列的有效algorithm是什么。 如果K很大,并且接近N,那么这个微不足道的algorithm(生成随机数,在将它们添加到序列之前,查看它们是否已经存在)是非常昂贵的。 在从链表中有效地select一组随机元素中提供的algorithm似乎比必要的更复杂,并且需要一些实现。 我刚刚发现了另一个algorithm,只要你知道所有的相关参数,就可以做得很好。

如何检查两个单词是否是anagrams

我有一个程序,告诉你两个词是否是彼此的字谜。 有几个例子可能无法正常工作,我希望有任何帮助,但是如果不是先进的,那将会很棒,因为我是第一年的程序员。 “校长”和“课堂”是互不相关的,但是当我把“课堂”改成“课堂”的时候,他们仍然说是字谜,我做错了什么? import java.util.ArrayList; public class AnagramCheck { public static void main(String args[]) { String phrase1 = "tbeclassroom"; phrase1 = (phrase1.toLowerCase()).trim(); char[] phrase1Arr = phrase1.toCharArray(); String phrase2 = "schoolmaster"; phrase2 = (phrase2.toLowerCase()).trim(); ArrayList<Character> phrase2ArrList = convertStringToArraylist(phrase2); if (phrase1.length() != phrase2.length()) { System.out.print("There is no anagram present."); } else { boolean isFound = true; for […]

在Java中testing素数的最快方法是什么?

我试图find最快的方法来检查给定的数字是否是素数(在Java中)。 以下是我提出的几种素质testing方法。 有没有比第二个实现(isPrime2)更好的方法? public class Prime { public static boolean isPrime1(int n) { if (n <= 1) { return false; } if (n == 2) { return true; } for (int i = 2; i <= Math.sqrt(n) + 1; i++) { if (n % i == 0) { return false; } } return true; } […]

boost :: hash_combine中的幻数

boost::hash_combine模板函数引用一个散列(称为seed )和一个对象v 。 根据文档 ,它结合了seed和v的散列 seed ^= hash_value(v) + 0x9e3779b9 + (seed << 6) + (seed >> 2); 我可以看到这是确定性的。 我明白为什么使用XOR。 我敢打赌,除了有助于将相似的值映射到很远的地方之外,所以探测哈希表不会中断,但是有人能解释一下这个魔术常量是什么吗?

如何将一个“大写字母”分隔的string分割成一个数组?

我如何从这个string:“ThisIsMyCapsDelimitedString” …这个string:“这是我的大写字母分隔string” VB.net中最less的代码行是首选,但也欢迎C#。 干杯!

编写自己的平方根函数

你如何编写自己的函数来find一个整数的最精确的平方根? Googlesearch后,我发现这个 (从原始链接存档),但首先,我没有完全得到它,其次,这也是近似的。 假定平方根为最近的整数(实际根)或浮点数。

什么algorithm可以用于以相当优化的方式将不同大小的矩形打包成最小的矩形?

我得到了一堆矩形物体,我需要把它放到最小的空间里(这个空间的尺寸应该是2的幂)。 我知道各种打包algorithm,将尽可能多的物品打包到一个给定的空间,但在这种情况下,我需要algorithm来计算出这个空间应该有多大。 例如说,我有以下矩形 128 * 32 128 * 64 64 * 32 64 * 32 它们可以打包成一个128 * 128的空间 _________________ | 128 * 32 | | ________________ | | 128 * 64 | | | | | | ________________ | | 64 * 32 | 64 * 32 | | _______ | ________ | 但是,如果还有一个160 * […]