【问题标题】:Algorithm for combinations of integer in an array数组中整数组合的算法
【发布时间】:2017-12-19 14:34:56
【问题描述】:

我在编写从单个整数数组创建数组数组的算法时遇到困难。

说,我有一个

int[] intArray = new int[] {1,2,3,4,5};

我需要的是一个数组,看起来像这样:

int[][] array = new int[][]{

    {-1,2,3,4,5},

    {1,-2,3,4,5},

    {1,2,-3,4,5},

    {1,2,3,-4,5},

    {1,2,3,4,-5};

提前谢谢你!!

编辑: 如果我只想有一个负值,则以下代码适用于这种情况。如果我想要 2,3,4... 负值怎么样?有没有办法让它更有活力?例如,从{1,2,3,4,5}; 得到:{-1,-2,3,4,5}, {-1,2,-3,4,5}, {-1,2,3,-4,5}, {-1,2,3,4,-5}, {1,-‌​2,-3,4,5},{1,-2,3,-4‌​,5}, {1,-2,3,4,-5}...‌​。或 3 个负值:{-1,-2,-3,4,5}, {-1,-2,3,-4,5}, {-1,-2,3,4,-5}, {1,-2,-3,-4,5},‌ ​{1,-2,-3,4,-5}, {1,2,‌​-3,-4,-5}...等我希望你明白我的意思!再次感谢各位!!

【问题讨论】:

  • 所以一个 for 循环和对角线的一些工作?制作一个接收数组并从那里开始的方法
  • 如果我只想有一个负值,以下代码适用于这种情况。如果我想要 2,3,4... 负值怎么样?有没有办法让它更有活力?例如,从{1,2,3,4,5}; 得到:{-1,-2,3,4,5},{-1,2,-3,4,5},{-1,2,3,-4,5},{-1,2,3,4,-5},{1,-2,-3,4,5},{1,-2,3,-4,5},{1,-2,3,4,-5}.... 或对于 3 个负值:{-1,-2,-3,4,5},{-1,-2,3,-4,5},{-1,-2,3,4,-5},{1,-2,-3,-4,5},{1,-2,-3,4,-5},{1,2,-3,-4,-5}...等 希望你明白我的意思!再次感谢大家!!

标签: java arrays arraylist multidimensional-array


【解决方案1】:

你可以试试这个:

    int l = intArray.length;
    int[][] newArray = new int[l][l];

    for (int i = 0; i < l; i++) {
        for (int j = 0; j < l; j++) {
            newArray[i][j] = j == i ? intArray[j] * -1 : intArray[j];
        }
    }

newArray 将具有您期望的值。

【讨论】:

    【解决方案2】:

    怎么样

    public class x
    {
        public static int[][] convert(int in[])
        {
            int s = in.length;
            int out[][] = new int[s][s];
    
            for (int i = 0; i < s; ++i) {   // row loop
                for (int j = 0; j < s; ++j) {
                    if (i == j)
                        out[i][j] = -in[j];
                    else
                        out[i][j] = in[i];
                }
            }
            return out;
        }
    
        public static void print(int in[][])
        {
            for (int i = 0; i < in.length; ++i) {
                String sep = "";
                for (int j = 0; j < in[i].length; ++j) {
                    System.out.print(sep + in[i][j]);
                    sep = ", ";
                }
                System.out.println("");
            }
        }
    
        public static void main(String argv[])
        {
            int in[] = { 1, 2, 3, 4, 5 };
            int out[][];
    
            out = convert(in);
            print(out);
        }
    }
    

    【讨论】:

      【解决方案3】:
          int[] intArray = new int[] {1,2,3,4,5};
          int algoIntArray[][] = new int[intArray.length][intArray.length];
      
          for(int i = 0; i < intArray.length; i++){
              for (int j = 0; j < algoIntArray[i].length; j++){
                  if (i == j){
                      algoIntArray[i][j] = -intArray[j];
                  } else {
                      algoIntArray[i][j] = intArray[j];
                  }
              }
          }
      

      此代码对您有用!

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多