首页 > 解决方案 > 有没有办法以省时的方式列出给定总和的所有子数组?

问题描述

我正在用 Java 实现纸牌游戏。我有一组卡片,每张卡片都有一个价值,因为:

我选择一张卡片 X(假设它的值为 8)

X:8

我有一个 ArrayList 卡片及其值

[A:5,B:2,C:2,D:1,E:1]

我想列出与卡片 X 的值匹配的所有可能的卡片总和组合,即

[A,B,D],[A,B,E],[A,C,D],[A,D,E]

解释: [A, B, D] => A + B + D = 5 + 2 + 1 = 8

代码:

if (card.GetValue() < valore) {
    int i = Tavolo.indexOf(card);
    int j = i + 1;
    int currentsum = card.GetValue();

    if (i < Tavolo.size() - 2) {
        while (j <= (Tavolo.size() - 1)) {
            Carta d = Tavolo.get(j);
            currentsum += d.GetValue();
            AggiungiPotenziale(index, d);

            if (currentsum == valore) {
                AggiungiPotenziale(index, card);
                index++;
                currentsum = card.GetValue();
            }

            if (currentsum > valore) {
                RimuoviPotenziale(index);
            }

            j++;
        }

        if (currentsum < valore) {
            RimuoviPotenziale(index);
        }
    }
}

标签: javaarraylisttimetime-complexitygame-development

解决方案


推荐阅读