标签: greedy

返回列表,其中包含列表中的前两个字符串作为元组

我正在编写一个Haskell函数,它接受一个字符串列表并返回一个包含前两个字符串的列表作为结果的元组.因此,示例输出将是:

listtuple ["bride", "zilla", "crazy", "women"] = [("bride", "villa")]
listtuple ["basketball", "football"] = [("basketball", "football")]
Run Code Online (Sandbox Code Playgroud)

我正在考虑接近它的方式如下:

listtuple :: Eq a => [Str a] -> [(Str a, Str a)]
listtuple xs = [(x,y) | x <- xs !! 0, y <- xs !! 1]
Run Code Online (Sandbox Code Playgroud)

基本上我认为我可以只选择列表的第一个和第二个索引中的元素,但我收到错误.这里有什么帮助?

string haskell list greedy

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

“C”中的贪心算法

我刚开始学习C language。我写了这个 C 代码来实现贪心算法我不知道我用这段代码犯了什么错误,那个代码看起来不错,但它没有按我预期的那样工作。有人可以帮我修复此代码吗?

int main(void) {
    float amount = 0;
    int cents = 0;
    int count = 0;
    int amount_left = 0;

    amount = .30;

    cents = (int)round(amount * 100);

    printf("%d", cents);

    amount_left = cents;

    while (cents - 25 >= 0) {
        count = count + 1;
        amount_left = cents - 25;
    }
    while (amount_left - 10 >= 0) {
        count = count + 1;
        amount_left = amount_left - 10;
    }
    while (amount_left - 5 >= 0) …
Run Code Online (Sandbox Code Playgroud)

c algorithm greedy

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

如何找到不超过某个值的最大项目总和?

如何找到不超过某个值的最大项目总和?例如,我有45个这样的值:1.0986122886681098、1.6094379124341003、3.970291913552122、3.1354942159291497、2.5649493574615367。我需要找到不超过 30.7623 的最大可能组合。

我无法使用暴力来找到所有组合,因为组合的数量将会很大。所以我需要使用一些贪心算法。

python algorithm knapsack-problem mathematical-optimization greedy

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

一个不正常的正则表达式,用于从页面中获取标题

我想用C#获取网页的标题.所以我正在请求该页面并获取响应页面并使用正则表达式来提取标题.

string regex = @"(?<=)([\ s\S]*)(?=)/";

但我看到一个网站有两个标题,如

<title>Page Title</title>
<link href="...."/>
<title>Page Title</title>
Run Code Online (Sandbox Code Playgroud)

因此,当我使用上面的正则表达式我得到标题

Page Title</title><link href="...."/><title>Page Title
Run Code Online (Sandbox Code Playgroud)

我知道正则表达式是贪婪的.如何修改正则表达式,以便它给我"页面标题"?

.net c# regex greedy

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

贪婪与动态

我有一些关于算法的一般性问题,当你遇到一些问题并想要编写一些算法时,你如何处理问题,你如何决定使用贪婪算法或动态编程?提前致谢

algorithm dynamic greedy

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

算法 - 最小化方程

如果我们给出一个等式3x + 2y <= 10,我们想要找到x和y的值,使得x + y =最大值并且10-3x-2y被最小化.如何才能做到这一点?我认为它是一个动态编程问题!但不确定我是否正确.

在上面的x = 0和y = 5将是答案.

谢谢.

algorithm dynamic greedy

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

虽然没有满足循环条件

我有这个功能:

int change(float c)
{
    float coins[] = {0.25, 0.10, 0.05, 0.01};
    int count[] = {0, 0, 0, 0};

    while(c > (0.00))
    {
        printf("I entered here\n");
        if((c-coins[0]) >= (0.00))
        {
            c -= coins[0];
            count[0]++;
            printf("-0.25, c = %.2f\n", c);
        }
        else if((c-coins[1]) >= (0.00))
        {
            c -= coins[1];
            count[1]++;
            printf("-0.10, c = %.2f\n", c);
        }
        else if((c-coins[2]) >= (0.00))
        {
            c -= coins[2];
            count[2]++;
            printf("-0.05, c = %.2f\n", c);
        }
        else if((c-coins[3]) >= (0.00))
        {
            c -= coins[3];
            count[3]++;
            printf("-0.01, …
Run Code Online (Sandbox Code Playgroud)

c floating-point if-statement greedy while-loop

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

这种贪婪的方法是什么?

我们有一个n数字数组,除了一个数字之外,所有数字都在这个数组中重复了很多次; 我们想要找到重复奇数次的数字.

我认为最优算法比时间复杂度更好,O( n Log(n) )因为我们可以对数组进行排序然后迭代它,当我们看到一个新数字时,我们增加一个累加器,当我们再次看到它时,我们减少累加器,最后每个成员的累加器不是零已经重复奇数次.

此外,我认为它没有一个更好的算法,O(n)因为如果它已经必须是O( Log(n) ),为此我们需要一个排序的数组,但我们的初始数组不是.

algorithm greedy time-complexity

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

C中的贪婪算法不返回任何值?

我试图用输入编写贪婪算法,该算法应返回更改中要使用的最小硬币数,但不返回任何值。我不知道为什么。它只是要求输入,然后什么也不显示。

我创建了一个先前的线程,其中确定了一个导致无限循环的错误,该错误被压缩,但是现在我的逻辑中似乎还有另一个潜在的错误。

#include <stdio.h>
#include <cs50.h>
#include <math.h>

// declare variable change_owed, num_coins, and input globally
float change_owed = 0;
float input;
int num_coins;

int main(void)
{
    // makes sure the input is non-negative
    do
    {
        input = get_float("Amount paid\n");
    }
    while(input <=0);

    // begin checking 
    while(input > 0)
    {
        if(input - .25 >= 0) // quarters
        {
            num_coins++; // number of coins used, to be printed later, is incremented
            input = input - .25; // coin is subtracted from …
Run Code Online (Sandbox Code Playgroud)

c greedy while-loop cs50

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

查找求和小于等于1000的给定整数所需的素数最少

这是我最近面临的编程挑战。

您得到的数字小于1000,您需要确定求和到给定数字的素数最少为多少。

例子:

12: 2 (since 12=7+5)
14: 2  (since 14 = 7+7)
Run Code Online (Sandbox Code Playgroud)

如果不可能将给定的数字分解为素数之和,则返回-1。

以下是一些测试用例:

88:2
117:3
374:2
363:3
11:1
Run Code Online (Sandbox Code Playgroud)

algorithm dynamic-programming greedy

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