代码之家  ›  专栏  ›  技术社区  ›  Tigran

如何在ArrayList中减少每一列并用Java中减少的列的总和创建新列

  •  0
  • Tigran  · 技术社区  · 6 年前

    我正在尝试一种新的保加利亚孤岛算法。在互联网上,这个游戏只有一个解决方案,每个人都在接受它。我试着用一种不同的方式来做。这是描述

    在本作业中,您将模拟保加利亚纸牌游戏。游戏以45张牌开始。把它们随机分成若干堆。例如,可以从大小为20、5、1、9和10的桩开始。在每一轮中,你从每一堆牌中取出一张牌,用这些牌组成一个新的牌堆。例如,样本开始配置将转换为大小为19、4、8、10和5的堆。当纸牌的大小依次为1、2、3、4、5、6、7、8和9时,纸牌就结束了。(可以显示您总是以这样的配置结束)在您的程序中,生成一个随机启动配置并打印它。然后继续应用纸牌步骤并打印结果。达到纸牌最终配置时停止。

    所以我创建了二维数组列表,并用随机的堆填充它。每一堆都有一些金额卡。总数正好是45。

    import java.util.ArrayList;
    import java.util.Collections;
    import java.util.List;
    import java.util.Random;
    
    public class BulgarianSolitare {
    
    
        public static void main(String[] args) {
    
    
            int numberOfCards = 45;
            Random random = new Random();
            int numberOfPiles = random.nextInt(numberOfCards) + 1;
            System.out.println("Number of piles - " + numberOfPiles);
    
            ArrayList<ArrayList<Integer>> piles = new ArrayList();
            ArrayList<Integer> eachPile = new ArrayList();
            ArrayList<Integer> lastPile = new ArrayList();
    
    
            if (numberOfCards % numberOfPiles != 0) {
                for (int i = 0; i < numberOfPiles; i++) {
                    for (int j = 1; j <= numberOfCards / numberOfPiles; j++) {
                    eachPile.add(j);
                    }
                    piles.add(eachPile);
                    eachPile = new ArrayList();
                }
    
                for (int i = 0; i < numberOfCards % numberOfPiles; i++) {
                    lastPile.add(i + 1);
                }
                piles.add(lastPile);
                eachPile = new ArrayList();
    
    
            } else {
    
                for (int i = 0; i < numberOfPiles; i++) {
                    for (int j = 1; j <= numberOfCards / numberOfPiles; j++) {
                        eachPile.add(j);
    
                    }
                    piles.add(eachPile);
                    eachPile = new ArrayList();
                }
            }
    
            System.out.println("This is your beginning set up:");
            for (int i = 0; i < piles.size(); i++) {
                System.out.print("[" + piles.get(i).size() + "]");
    
            }   
        }
    }
    

    这个程序的输出是。

    桩数-17

    这是您的初始设置:

    〔2〕〔2〕〔2〕〔2〕〔2〕〔2〕〔2〕〔2〕〔2〕〔2〕〔2〕〔2〕〔2〕〔2〕〔2〕〔2〕〔2〕〔11〕

    现在我需要写程序的主要逻辑,但是无论我写什么,我都会得到一个ob边界错误。有谁能帮我弄一下这个游戏。

    0 回复  |  直到 6 年前