首页 > 解决方案 > 如何在c中的递归中打印使用的结构?

问题描述

我写了一个名为的函数rucksack,它接受一个线性列表和一个限制权重的限制器。该函数返回您可以在不超过 4500 重量的情况下选择的所选项目的最大成本。

#include <stdio.h>

struct item {
    int weight;         // Artikelgewicht in Gramm
    int value;          // Artikelwert in Euro
    int stock;          // Vorhandene Artikelmenge
    struct item *next;
};

struct item laptop = {1500, 1000, 3, NULL};
struct item tablet = { 700, 300, 2, &laptop};
struct item mobile = { 180, 500, 2, &tablet};
struct item *items = &mobile;

int max(int a,int b)
{
    return a > b ? a : b ;
}

int rucksack ( struct item* item , int limit) 
{
    if (item == NULL)
        return 0 ;
    int sum = 0 ;
    for (int i = 0 ; i<= item->stock && i * item->weight<=limit ; i++)
        sum = max(sum, i * item->value + rucksack (item->next , limit - i*item->weight )) ;
    return sum;
}

int main() {

    printf("%d", rucksack(items, 4500));
}

我想知道选择了哪些项目组合,但我不知道如何在递归中实现它。有人可以帮忙吗?

标签: crecursionstruct

解决方案


推荐阅读