小编Kor*_*era的帖子

我可以使用动态编程来解决这个问题吗?

我对动态编程的经验很少.我用它来解决DNA对齐问题,基本背包问题和简单的寻路问题.我明白他们是如何工作的,但这并不是我觉得非常舒服的东西.

我有一个问题,让我想起0-1动态编程,但差异让我失望,我不确定我是否仍然可以使用这种技术,或者我是否必须采取递归方法.

假设我有一个项目列表,每个项目都有不同的值,权重和成本.每个项目可能不止一个.

假设我必须选择最有价值的那些项目的组合,但仍然在重量和成本的限制范围内.到目前为止,我已经用2个约束描述了背包问题.但这就是区别:

所选项目的值会根据我在组合中的数量而变化.

假设每个项目都有一个与之相关的功能,它告诉我这些项目的组合对我来说是多么值得.它是一个基本的线性函数,例如value_of_item = -3(该项的数量)+50

所以,如果我在一个组合中有一个项目,那么它对我的价值是47.如果我有两个,那么他们每个人的价值仅为44.

如果我为此使用动态编程表,那么对于每个单元格,我必须回溯以查看该项目是否已经在当前组合中,使得DP无意义.但也许有一种方法可以重新构建问题所以我可以利用DP.

希望这是有道理的.

另一种方法是生成每个项目组合,在成本和重量的限制内,计算每个组合的价值,选择最有价值的组合.对于1000个项目的列表,这将是一个昂贵的搜索,这是我将反复计算的东西.我想找到一种方法来利用DP的优势.

c recursion combinations dynamic-programming

6
推荐指数
1
解决办法
217
查看次数

如何制作voronoi图的网格变体?

我有一个让我想起Voronoi的问题,但是我希望我的变化能让我避免使用Voronoi算法,并且更快地写一些东西.

这是我在Paint中制作的可怕图像来说明我的问题:

网格状的voronoi

说我有一张地图区域.每个点代表一个商店.每个方块代表一个社区.voronoi图显示了最接近每个商店的区域.

如果其中一个区域占据了一个广场,那么整个广场都属于那个商店.

是否有可能确定哪个方块属于哪个商店,而无需计算中间voronoi图?似乎,因为这就像voronoi图的非常粗略的近似,应该有一个超快的快捷方式来生成它.

voronoi

5
推荐指数
1
解决办法
670
查看次数

我的指针错误在哪里?

我已经完成了以下代码,但我找不到有什么问题.该函数getsxnremem()使用字符串获取字符串,len使用fgets()空终止符覆盖换行符(如果有的话),然后重新调整内存大小以适应字符串.无论如何,这是个主意.

以下代码有时会起作用,有时会崩溃.我过去经常发生这种情况,我经常发现问题,但这次我花了太长时间.

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

unsigned getsxnremem(char **str, unsigned len){
    unsigned l, flag = 1;
    free(*str);
    char *buff;
    if ((*str = malloc(len)) == NULL) return 0;
    if(fgets(*str, len, stdin) == NULL) { free(*str); return 0; }
    l = strlen(*str);
    if (l && ((*str)[l-1] == '\n')) { *(str)[l-1] = '\0'; flag = 0; }
    if ((buff = realloc(*str, l + flag)) == NULL){ free(*str); return 0; }
    *str = buff;
    return (l …
Run Code Online (Sandbox Code Playgroud)

c realloc

2
推荐指数
1
解决办法
101
查看次数

如何编写涉及Unicode的C代码?

我有一个类似的问题,询问什么语言最适合这项任务,而Perl就是答案.但我仍然很好奇如何解决这个问题.

我想给这个程序一个大文本文件,里面装满了从小说,报纸,网页上摘取的德文文本样本.我想要一个文本文件中所有单词的频率列表,按最常见的单词排序.我需要列出3000个最常见的德语单词.

如果这只是一个ASCII问题,那么这对我来说就是孩子的游戏.在整个早上读完Unicode之后,我真的很惊讶雷区是什么.

怎么在C中完成?

我有一个朋友在Python中放了一些东西,但他仍然是初学者,他的代码在1.4 MB文本文件上花了大约30分钟.

c word-frequency

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

为什么这个赋值不能在函数之外工作?

这是我发生的事情的一个例子.第一段代码不起作用.

typedef struct {
    char *desc;
    unsigned quantity;
} item;

item *inventory[INVENTORY_SIZE];

item thing = { "This is a thing.", 2 };
inventory[0] = &thing;  // Fail.

int main(void){
    // Code goes here.
}
Run Code Online (Sandbox Code Playgroud)

但是,以下代码将起作用.

typedef struct {
    char *desc;
    unsigned quantity;
} item;

item *inventory[INVENTORY_SIZE];

item thing = { "This is a thing.", 2 };

int main(void){
    inventory[0] = &thing;  // Works.
}
Run Code Online (Sandbox Code Playgroud)

我知道我不能在函数之外调用函数,但我可以在函数之外分配全局变量.这看起来像是一项任务.那么为什么它不起作用呢?

编辑:当我点击"发布"时,我想我意识到了答案.您可以在函数外部的声明中指定值,但前提是它只是声明.这就是答案,不是吗?

c struct initialization variable-assignment

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

TMUX 窗格中的 vim 发生了什么?

当我在 TMUX 窗格内打开 vim 时,该窗格充满了我无法识别的代码。如果我只运行 vim,我会得到:

^[[38;2;165;42;42m  1
^[[38;2;0;0;255m~
Run Code Online (Sandbox Code Playgroud)

如果我用 vim 打开文件,我会得到类似这样的信息(顶部窗格): 在此输入图像描述

对于 vim 和 TMUX 来说都是新事物。我该如何解决这个问题?

linux vim tmux

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