functionOfA(int a [])有什么作用?

时间:2012-03-14 20:38:45

标签: java

我目前正试图找出某个方法的作用,以便继续对其进行注释,提供后置条件和循环不变量。

我发现了什么:

  • 在正面和负面数组上,所有正数x在第一次遇到最小值时变为正数。

  • 当数组全部为负数时,xy是元素的总和。

有人看到另一种方法来分析这种方法吗?谢谢你的时间。

Java代码:

public class funA {
    public static void functionOfA(int a[]) {
      int MAXINT = Integer.MAX_VALUE;
      int x = MAXINT; 
      int y = MAXINT; 
      int i = 0;
      int n = a.length;

      while(i != n) {
        if(y == MAXINT) {
          y = a[i];
          x = min(x, y);
          System.out.println("x: " + x + " y: " + y); 
          i= i+1;
        } else {
          y = min(y + a[i], a[i]);
          x= min(x, y);
          System.out.println("x: " + x + " y: " + y); 
          i= i+1;
        }  
      }
      System.out.println(x + " " + y);
  }

  public static int min(int x, int y) {
    if(x < y) {
      return x;
    } else {
      return y;
    }
  }

  public static void main (String args[]) {
    int a[]= new int[] { 0, -9, 3, 2, -4, 3, -12, 3, 1 };
    functionOfA(a);
    for(int i= 0; i < a.length; i++) {
      System.out.print(a[i]+ " ");
    }

    System.out.println();
    System.out.println();

    int a2[]= new int[] { -9, -3, -10, -4, -2 };
    functionOfA(a2);
    for(int i2 = 0; i2 < a2.length; i2++) {
      System.out.print(a2[i2]+ " ");
    }
  }
}

顺便说一下这是给定的:

int x = MAXINT; int y = MAXINT; int i = 0;
int a[n];

while (i != n) {
  y = min(y + a[i], a[i]);
  x = min(x, y);
  i = i + 1;
}

4 个答案:

答案 0 :(得分:4)

输出是负数,等于连续负数的最大(绝对值)总和

-1, -1, -1, 5, 4, 3, -10  -> -10
-3, -4, -5, 5, 4, 3, -10  -> -12

至于为什么有人这样做,我不知道。项目欧拉?

答案 1 :(得分:1)

在我看来,函数正在以尽可能少的总和来搜索子序列。

编辑@Thomas:关闭,但总和的子序列可能包含正数。例如,稍微修改一个示例(-3,-4,-5,5,4,3,-10 =&gt; -12):-3,-4,-5,5,4,-10 =&gt; ; -13(整个数组的总和)。

答案 2 :(得分:0)

我认为方法functionOfA试图确定数组a []

中的最小值

答案 3 :(得分:0)

使用此输入:

int [] a = {-1,2,3,777,-777,-20,30,90,0,0,0,0,0,0,0,0,8,8,8,8,8,0,1,1,1,1,1,1,1,1,1,1,1,1,1};

您的计划产生:

x: -1 y: -1
x: -1 y: 1
x: -1 y: 3
x: -1 y: 777
x: -777 y: -777
x: -797 y: -797
x: -797 y: -767
x: -797 y: -677
x: -797 y: -677
x: -797 y: -677
x: -797 y: -677
x: -797 y: -677
x: -797 y: -677
x: -797 y: -677
x: -797 y: -677
x: -797 y: -677
x: -797 y: -669
x: -797 y: -661
x: -797 y: -653
x: -797 y: -645
x: -797 y: -637
x: -797 y: -637
x: -797 y: -636
x: -797 y: -635
x: -797 y: -634
x: -797 y: -633
x: -797 y: -632
x: -797 y: -631
x: -797 y: -630
x: -797 y: -629
x: -797 y: -628
x: -797 y: -627
x: -797 y: -626
x: -797 y: -625
x: -797 y: -624
-797 -624

对我毫无意义......