【问题标题】:Java Recursion Array and Max sum pathJava递归数组和最大和路径
【发布时间】:2014-03-10 15:39:21
【问题描述】:

好的,我已经从事这项任务一段时间了,但由于我经常遇到砖墙而无法完全开始。 基本上我需要做的是从文件中获取数据并用数据递归地填充不同的 2d int 数组 例如 .txt 文件可能有:

2 <-- number of 2d arrays to have
3 <-- L X W of the 2d array
1 2 4 <-|
4 7 9 <-|-- Data to fill 2d array
2 1 6 <-|
2 <-- L X W of the 2d array
3 4   <-|-- Data to fill 2d array
5 9   <-|

所以我想的是,我会使用大小添加到索引中,以便跳过已经放入数组的数据块。所以一个数组会有 1 2 4 4 7 9 2 1 6 在里面让我和其他人一起工作 3 4 5 9 我尝试了很多方法,但它必须是递归的,并且能够处理这种格式的任何数据..有什么想法吗?

【问题讨论】:

  • 我没有得到您对尝试的描述,但是创建 3x3 数组有什么困难,例如,逐个读取值并相应地填充元素?我认为阅读文件和构建数组是任务的简单部分......嗯。
  • 你的问题对我来说似乎很不清楚。能再解释一下吗?
  • 我有一个包含此信息的文件。我需要用单独的数据集递归地填充二维数组。可以有任意数量的情况,因此它基本上需要使用这种格式的任何文本文件。我对java很陌生,所以这可能很容易。但我似乎无法弄清楚如何将文件中的特定信息读入单独的二维数组并打印出来,以便我可以仔细检查它们是否包含正确的信息
  • 你尝试了什么?你能读懂个别的行和数字吗?顺便说一句,这看起来很像 UVA 在线法官。
  • 我可以将所有内容放入一个数组中,但我不知道如何将它们分成一个整数数组,以便我可以处理各个数据集。我不确定什么是 UVA 在线评委;这只是我的教授给我们的实验室的一部分

标签: java arrays recursion path sum


【解决方案1】:
    String[size][size] myArray = new String[size][size];
    int row = 0 ;
    int column = 0;

    BufferedReader br = null;

    try {

        String line;

        br = new BufferedReader(new FileReader("The File Path HERE!"));

        //for each line in file
        while ((line= br.readLine()) != null) {

            //split on white space
            String[] row = line.split("\\s+");

            //column index
            for(int i =0; i < row.length; i++){
                  String context = row[i];
                  myArray[row][column] = context;
                  row++;
                  column++;
                  if(row == size) row = 0;
                  if(column == size) column = 0;                
            }
        }

    } catch (IOException e) {
        e.printStackTrace();
    } finally {
        try {
            if (br != null)br.close();
        } catch (IOException ex) {
            ex.printStackTrace();
        }
    }

【讨论】:

  • 如果有帮助请点赞!
  • 这基本上是我一直在搞砸的,但我的问题是如何分离数据集。你说在哪里做二维数组的东西..我不知所措。我知道如何找到文件,甚至将其全部读入 2d char 数组,但我知道如何将其放入 2d int 数组中,并在大小指示器处分隔..就像在我的示例问题中一样,它应该创建两个不同的数组跨度>
  • 给我几分钟,我给你打点东西
  • 这会将所有信息都放入上下文中。将文件复制到字符串中很好,我明白这一点,但是如何使用 2d 整数的数量和大小来制作单个 2d每个数组都是问题。我很抱歉缺乏清晰度
  • 所以我刚刚更新了它,展示了如何填充二维数组。让我再做一次更新来展示如何处理这些数字...
【解决方案2】:

这就是我的意思,我将案例分成不同的数组以单独使用。它不像我想要的那样递归,但它会起作用..它会创建一个不断更改的数组,以在其中包含不同的数据集。稍后,我将在最外层的 for 循环中放置一个递归调用,该循环使用这些案例,以便在为我的作业的下一部分填充数据之间迭代每个案例。谢谢大家的帮助和意见!

File file = new File("filename.txt");
    Scanner scanner = new Scanner(file);

    int caseNum = scanner.nextInt();

    for (int cases = 0; cases < caseNum; cases++) 
    {
        int size = scanner.nextInt();
        int[][] content = new int[size][size];

        for (int i = 0; i < size; i++) 
        {
            for (int j = 0; j < size; j++) 
            { 
                content[i][j] = scanner.nextInt();
                System.out.print(content[i][j]); 
            }        
        }
        System.out.println("");
    }

【讨论】:

    猜你喜欢
    • 2014-05-21
    • 1970-01-01
    • 1970-01-01
    • 2016-05-07
    • 2017-08-08
    • 2017-02-02
    • 2021-04-05
    • 1970-01-01
    • 2016-01-20
    相关资源
    最近更新 更多