如何生成多维数组的随机地址?

时间:2016-05-25 08:10:57

标签: java collections

我被困了请求帮助!

矩阵的大小为n和m。

例如 - n = 4,m = 3
 1,2,3,4  5,6,7,8  9,10,11,12

如何生成随机地址?

对于例如 - (0,0),(1,1),(1,2),(2,2),(3,3);
- >最后一个地址应该代表矩阵的结束元素 - >下一个地址应该是向右或向下的元素的地址。

    Random random = new Random();
    List<Integer> list = new ArrayList<>();
    int random_int_1 = 0, random_int_2 = 0;
    int i = 0;
    list.add(2);
    list.add(1);
    while (list.get(i) < list.get(i + 1)) {
        list.add(random_int_1 = random.nextInt(5));
        list.add(random_int_2 = random.nextInt(5));
        i++;
    }
    for (int j = 0; j < list.size() - 1; j++) {
        if (list.get(j) < list.get(j + 1)) System.out.print(list.get(j));
    }

我通过解决这些例子来提高我的技能 请告诉我如何解决这些问题 提供一些待办事项

1 个答案:

答案 0 :(得分:1)

哦,我会尽力帮助你。 根据您的示例,您有一个当前点,从那里代码应该随机向右和向下移动点。移动时我仍然有点模糊,或者移动这两个问题,但这并不重要,在第2步和第3步之间你可以定义一些逻辑来做任何一个,或做其中一个或两个。 (现在它可能不会移动!想想这个!)

您的算法应该执行以下操作:

  1. 确定当前点是否位于矩阵的边缘(位置m = 3,n = 4不能移动)
  2. 如果可以向右移动,则创建一个随机0或1.如果0不执行任何操作,如果1向右移动。
  3. 如果可以向下移动,则创建一个随机0或1.如果0不执行任何操作,如果1向下移动。
  4. 将位置附加到列表并更新当前位置,转到步骤1.
  5. 您可以使用循环或递归算法实现此目的。希望你能解决这些待办事项的问题:)