小编Mys*_*ial的帖子

用于乘法的背包算法

我有一组N数字,每个数字附加一些费用,问题是选择所有可能的数字组作为列表,使其产品小于一定数量M,根据成本总和进行排序.

例如: - 这组数字是

(number, costOfThatNumber) : {(90, 10) , (80, 20), (60, 40), (40, 60), (15, 85)},
Run Code Online (Sandbox Code Playgroud)

并且产品必须小于Prod <= 1000,

可能的解决方案是: -

[Solution 1 :- {(15, 85), (40, 60)} :- Product = 600 (which is less than, 1000), cost = 85 + 60 = 145]
[Solution 2 :- {(15, 85), (80, 20)} :- Product = 900 and cost = 105]
Run Code Online (Sandbox Code Playgroud)

所以列表变成,{Solution2, Solution1}.

PS: -

  1. 这不是一个家庭作业问题,在接受采访时被问到.我只被问到算法,我只能说它看起来有点像背包问题,但是用于乘法.
  2. 如果我无法正确解释问题,请原谅.

algorithm knapsack-problem

0
推荐指数
1
解决办法
691
查看次数

编译文件时出现C++错误

我有一个名为BottlingPlant的课程.我创建了以下头文件:

#ifndef __BOTTLINGPLANT_H__
#define __BOTTLINGPLANT_H__

#include <iostream>

class BottlingPlant {
public:
BottlingPlant( Printer &prt, NameServer &nameServer, unsigned int numVendingMachines, unsigned int maxShippedPerFlavour, unsigned int maxStockPerFlavour, unsigned int timeBetweenShipments );
void getShipment( unsigned int cargo[ ] );
void action();  
};

#endif
Run Code Online (Sandbox Code Playgroud)

以下.cc文件:

#include <iostream>
#include "PRNG.h"
#include "bottlingplant.h"

BottlingPlant::BottlingPlant( Printer &prt, NameServer &nameServer, unsigned int numVendingMachines, unsigned int maxShippedPerFlavour, unsigned int maxStockPerFlavour, unsigned int timeBetweenShipments ) {


}

void BottlingPlant::getShipment( unsigned int cargo[ ] ) {

}

void BottlingPlant::action() {

} …
Run Code Online (Sandbox Code Playgroud)

c++ compiler-errors header

0
推荐指数
1
解决办法
76
查看次数

你会如何使用两个维度来解决一维记忆?

你会如何使用两个维度来解决一维记忆?(如所获得的价值Matrix::ValueAt(row, col),其中Matrix存储该值作为一门维阵列(float m[16]对于4×4矩阵).

class Matrix4x4
{
    private float m[16];

    float getValueAt(int row, int col)
    {
        // I want this function
    }

}
Run Code Online (Sandbox Code Playgroud)

c++ memory matrix

0
推荐指数
1
解决办法
80
查看次数

为什么此链接列表代码始终为null?

我已经实现了一个短链接列表代码,以添加到列表的开头.

然而,头总是包含NULL.我真的不明白为什么它以这种方式行事.任何帮助表示赞赏!以下是代码:

#include<stdio.h>
#include<stdlib.h>

typedef struct node
{
    int iData;
    struct node *next;
} Node;

void add2Beg(Node* head, int num);


int main(int argc, char const *argv[])
{
    Node *head = NULL;
    add2Beg(head, 5);
    if (head == NULL)
        printf("nothing in head !!!\n");
else{
    printf("not null\n");
}
    add2Beg(head, 15);
    return 0;
}

//adds to the beginning of the linked list
void add2Beg(Node* head, int num)
{
    //create a temporary location to hold the new entry
    Node* temp = (Node *)malloc(sizeof(Node)); …
Run Code Online (Sandbox Code Playgroud)

c linked-list

0
推荐指数
1
解决办法
1550
查看次数

如何将指针转换为引用?

我有一个功能:

bool IntersectBoxBox(IShape3D* a, IShape3D* b)
    {
        Box* boxA = (Box*)a;
        Box* boxB = (Box)b;

        return(boxA->Intersects(boxB));
    }
Run Code Online (Sandbox Code Playgroud)

当2个IShape3D被确定为a box和a box类型(有IShape3D->GetType()方法)时调用它.

无论如何,问题是Intersects需要一个Box& box,所以我无法传递一个指针.是否有一种廉价的方式来转换参数?

c++ pointers reference type-conversion

0
推荐指数
1
解决办法
147
查看次数

if-else vs if-else-if-else

在else中使用if else和else或if else和其他条件之间是否有任何区别.例如,

if (i == 5)
  printf("i is 5");
else if (i > 5)
  printf("i is greater than 5");
else
  printf("i is less than 5");
Run Code Online (Sandbox Code Playgroud)

要么

if (i == 5)
  printf("i is 5");
else {
  if (i > 5)
    printf("i is greater than 5");
  else
    printf("i is less than 5");
}
Run Code Online (Sandbox Code Playgroud)

执行没有区别.两个片段都会给出相同的结果但是我们应该使用后者或第一个,因为一个是更好的编程习惯,而另一个则不是.

c conditional-statements

0
推荐指数
1
解决办法
600
查看次数

程序因递归而减慢

我正在尝试编写一个程序,将我的C:驱动器上的每个文件和文件夹名称添加到ArrayList.代码工作正常,但由于大量的递归,它变得非常缓慢.这是代码:

public static void updateFileDataBase()
{
    ArrayList<String> currentFiles = new ArrayList<String>();
    addEverythingUnder("C:/",currentFiles,new String[]{"SteamApps","AppData"});
    for(String name : currentFiles)
        System.out.println(name);
}
private static void addEverythingUnder(String path, ArrayList<String> list, String[] exceptions)
{
    System.gc();
    System.out.println("searching " + path);
    File search = new File(path);
    try
    {
        for(int i = 0; i < search.list().length; i++)
        {
            boolean include = true;
            for(String exception : exceptions)
                if(search.list()[i].contains(exception))
                    include = false;
            if(include)
            {
                list.add(search.list()[i]);
                if(new File(path + "/" + search.list()[i]).isDirectory())
                {
                    addEverythingUnder(path + "/" + search.list()[i],list,exceptions);
                }
            }
        } …
Run Code Online (Sandbox Code Playgroud)

java recursion performance

0
推荐指数
2
解决办法
197
查看次数

找到第N个数字的Pi

我开始自学C++直到我的课程在秋季开课.我想知道你是否能够帮我提出一个更好的方法来询问用户他们想要的数字pi数字,然后显示它.我的问题是使用pi = atan(1)*4并不精确到大约10位小数.是否有更好的内置数字,pi至少至少20个小数位?这是我到目前为止,谢谢!

#include <iostream>
#include <string>
#include <iomanip>
#include <ios>
#include <sstream>
using namespace std;
using std::setprecision;
using std::streamsize;


int main()
{
    double pi = atan(1)*4;
    int input = 0;
    while(true)
    {
        cout << "Please enter how many digits of PI you would like to see (Max 20): ";
        cin >> input;
        if(input > 0 && input <= 20)
        {
            break;
        }
        else
        {
            cout << "That's not a valid number! Try again." << endl;
        }
    }
    streamsize prec …
Run Code Online (Sandbox Code Playgroud)

c++ pi arbitrary-precision

0
推荐指数
1
解决办法
5486
查看次数

使用临时变量是否存在性能问题?

我有一个关于在java中创建新对象的问题.

让我们说我有方法叫: foo(String[] a)

我想传递给foo一个新String[]的只有一个用途的东西更好

表现1或2

1.

String[] a = new String[]{"a"};

foo(a);
Run Code Online (Sandbox Code Playgroud)

2.

foo(new String[]{"a"});
Run Code Online (Sandbox Code Playgroud)

谢谢你的帮助

java performance

0
推荐指数
1
解决办法
153
查看次数

优化:为什么<比多个更贵!=

我有一个2d的字符数组,我需要做一些操作.在某些情况下,我需要检查字符是否是啊.我过去通过检查字符是否与其他任何字符(仅有5个其他字符)相同来完成此操作.但是,我最近有一个想法,我可以检查字符是否是<'j'以获得相同的结果,希望更少的汇编指令.

在我说的一些地方,它确实导致了一个小的加速,但在其他地方,它导致了相当大的减速.任何想法为什么会这样?与= in if语句相对的相对费用是多少?=

这是一个示例代码段:

if( arr[r][c] == arr[r][c+1] && arr[r][c] == arr[r][c+2]
         && arr[r][c] != 'q' && arr[r][c] != 'r' && arr[r][c] != 's' && arr[r][c] != 't')
Run Code Online (Sandbox Code Playgroud)

VS

if( arr[r][c] == arr[r][c+1] && arr[r][c] == arr[r][c+2]
         && arr[r][c] < 'j')
Run Code Online (Sandbox Code Playgroud)

c c++ arrays optimization performance

0
推荐指数
1
解决办法
250
查看次数