给定3个具有整数(正数和负数)的可变长度数组,可以通过乘积每个数组中的一个元素来找到最大乘积。
例如:
A = [ 10, -10,15,-12];
B = [10, -12,13,-12];
C = [-11, -10, 9,-12];
上述数组的:使用15、-12、-12.的最大乘积= 2160
我尝试使用蛮力方法O(N^3)实现它,使用三个嵌套的for循环,但我正在寻找更优化的方法。
int[] A = new int[]{10,-10,15,-12};
int[] B = new int[]{10,-12,13,-12};
int[] C = new int[]{-11,-10,9,-
给定两个长度相等的N列表,我想找出可以通过将每个列表中的一个元素相乘而得到的K最大乘积。例如,如果
> A = [7, 9, 4, 1, 6]
> B = [8, 1, 3, 10, 7]
> K = 3
结果是[90, 72, 70]或[9*10, 9*8, 7*10],通过
> sorted([x*y for x in A for y in B], reverse=True)[:K]
[90, 72, 70]
有没有一种更有效的算法,不需要将所有N^2对相乘?
问题是:能被从1到20的所有数字整除的最小正数是多少?
我写了下面的程序,它给出了正确的输出,但它花了很长的时间来执行。
我可以做些什么来紧固我的程序?
public class ep5 {
public static void main(String[] args) {
int n=100,k=0;
boolean check=true;
while(check)
{
k=0;
n++;
for (int i=2;i<21;i++)
if(n%i!=0)
嘿,这个方法适用于几个数字,但是它经常只是随机地给出一些巨大的数字,我对所使用的数据类型有点困惑,结果应该适合长,任何人都可以帮助吗?公式是n!/k!
我试着得到合适的结果。
public static long penguPermutation(long n, long k) {
long fact1 = 1;
long fact2 = 1;
for(long i = 2; i <= n; i++){
fact1 = fact1 * i;
}
System.out.println(fact1);
for(long i =
我正在使用R的主题模型包将一大组简短的文本( 10-75个单词)聚成一个主题。在手动查看了几个模型之后,似乎有20个真正稳定的主题。然而,我发现真正奇怪的是,它们都差不多大小!每个主题捕获约5%的标记和5%的文本。在令牌方面,最小的主题是4.5%,最大的5.5%。
有人能建议这是否是“正常”行为吗?这是我使用的代码:
ldafitted <- LDA(sentences.tm, k = K, method = "Gibbs",
control = list(alpha = 0.1, # default is 50/k which would be
我有一个应用程序,我对我的代码做了一些速度分析,限制因素是两个数组的乘法。我有一个数组X,如下所示(在我的实际代码中,它是一个长而不是15个的2000元素吗):
A,b,c,d,f,g,j,k,i,n,o
第二个数组Y(在我的实际代码中是300个元素,而不是6个元素)如下:
阿、中、中、英、法
然后按照以下方式将数组相乘,以创建一个新的数组C:
value 1 A*a+B*b+C*c+D*d+E*e+F*f
value 2 A*b+B*c+C*d+D*e+E*f+F*g
value 3 A*c+B*d+C*e+D*f+E*g+F*h
value 4 A*d+B*e+C*
请帮助我与底层程序,因为我被卡住了。我是个新手程序员。
import java.util.*;
public class Source
{
static int maxProduct(int arr[]) {
int n = arr.length ;
if (n < 2)
{
System.out.println("NA");
return Integer.MIN_VALUE;
}
int a = arr[0];
我有一个问题,一个动态规划问题。我觉得很难,所以我希望我能得到一些帮助。
给出一个单词列表和密码的长度n,我想知道密码可能组合的数量。密码可以是长度为n的单个单词,也可以是由下划线分隔的单词的组合。
例如,passwords(5, ["house, "no"]) = 2,因为可能的密码是"house“和"no_no”。
到目前为止,我已经尝试过:
def voc_to_list(vocabulary):
"""
produces a list lengths such that lengths[i] is the
我的一个家庭作业问题,我只允许进口圆周率。
这个问题要求用Taylor级数来计算余弦函数,到目前为止,我已经这样做了。我得到的输出是正确的,但是当k大于90时,我得到OverflowError: int太大,无法转换为浮动。
from math import pi
def myCos(angle,k):
total=0
for i in range(k):
total += (((-1)**(i))*((angle*pi/180)**(2*(i))))/(fact(2*(i)))
return total
def fact(n):
if n
我实现了以下代码:
python3
n = int(input())
a = [int(x) for x in input().split()]
c = list()
for i in range(0,n):
for j in range (1,n):
if a[i] != a[j]:
m = a[i]*a[j]
c.append(m)
else:
continue
print(max(c))
输出错误
失败案例#4/17:超过时间限制(已用时间:10.025.00,已用内存:2
问题:找出由两个3位数字的乘积组成的最大回文。 public class Problem4 {
public static void main(String[] args) {
System.out.print(largestPalindrome());
}
static String largestPalindrome () {
String s = "";
for (int j = 999; j > 99; j--) {
for (int k = 999; k
给出了一个有向图G= ( v,E),其中每个边(u,v)∈E有一个相关联的值r(u,v),它是0≤r(u,v)≤1范围内的实数,表示从顶点u到顶点v的通信通道的可靠性,我们将r(u,v)解释为从u到u的通道不会失败的概率,我们假设这些概率是独立的。给出了在两个给定顶点之间寻找最可靠路径的有效算法。
a
/ \
b<--c a directed to c; c directed to b; b directed to a
假设这是图G= (V,E);顶点a是根,其中一个边是a to c,a=u&c=v,所以边是(u,v)。我想用Dijkst
是否有一个有效的算法来计算最小整数N,使N!可以被p^k整除,其中p是一个相对较小的素数,k是一个非常大的整数。换句话说,
factorial(N) mod p^k == 0
如果,给定N和p,我想知道p除以N的次数!,我会使用众所周知的公式。
k = Sum(floor(N/p^i) for i=1,2,...
我做过蛮力搜索k的小值,但是随着k的增加,这种方法很快就崩溃了,而且似乎没有一个模式,我可以推断出更大的值。
2011年6月13日编辑
使用Fiver和Hammar提出的建议,我使用了一个准二进制搜索来解决这个问题,但并不完全按照他们建议的方式解决。使用上述第二个公式的截断版本,我计
当我尝试创建自己的阶乘函数时,我发现如果成对计算,计算速度是原来的两倍。如下所示:
1: 2*3*4... 50000*50001 =4.1秒
2组:(2*3)*(4*5)*(6*7) ... (50000*50001) =2.0秒
3组:(2*3*4)*(5*6*7) ... (49999*50000*50001) =4.8秒
这是我用来测试的c#。
Stopwatch timer = new Stopwatch();
timer.Start();
// Seperate the calculation into groups of this size.
int k = 2;
BigIn
如果对每一对数字ai,aj,(i≠j)存在ak,使得ak = ai * aj,则数组a称为优美。注意,k也可以等于i或j。找出给定的数组a是否漂亮!
投入:
输入的第一行包含一个整数T,表示测试用例的数量。测试用例紧随其后。
每个测试用例的第一行包含表示元素数的整数n。
下一行包含n个空格分隔的整数,表示数组a。
产出:
“是”或“不是”
为什么我会得到一个运行时错误?
T = input()
i = 0
while i < T:
n = input()
a = raw_input()
k = a.split(" ")
'''
Given an integer array, find three numbers whose product is maximum and
output the maximum product.
Example 1:
Input: [1,2,3]
Output: 6
Example 2:
Input: [1,2,3,4]
Output: 24
Note:
The length of the given array will be in range [3,104] and all elements are
in the range [-1000, 1000]
我试图用Python创建K MxN matrices,它存储在一个(M,N,K) numpy数组C中,由两个矩阵( A和B )组成,形状分别为(K, M)和(K,N)。第一个矩阵被计算为C0 = a0.T x b0,其中a0是A的第一行,b1是第一行B,第二个矩阵是C1 = a1.T x b0等等。
现在我用一个for循环来计算矩阵。
import numpy as np
A = np.random.random((10,800))
B = np.random.random((10,500))
C = np.zeros((800,500,10))
for k in range(10):
首先,我是一个新的程序员。我正在寻找最大的回文,它是我在Project Euler-Problem 4上找到的两位数整数的乘积。我写了一些代码:
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
int n;
int i,num,k;
int sum, j=1, palindrome = 0;
num = 999*999;
i = n = num;
while(!palindrome){
for(i=999*999; i>