私は現在、特定のメソッドが何をしているのかを理解しようとしています。それは、ポストコンディションとループ不変条件を提供するために注釈をつけることに進みます。私は考え出した何functionOfA(int a [])は何をしますか?
:正と負のアレイ上
、すべての正
x
は、最小が発生した最初の時間に正となります。配列がすべて負の場合、
x
とy
は要素の合計です。
誰でもこの方法を分析する別のアプローチを参照してください。あなたの時間をありがとう。
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;
}
この機能を書いた人は誰でも、撮影して、撮影しておく必要があります。入力やオーバーフロー(そうでなければ何が起きるか分かっている)のために、MAXINTは決して起こり得ないと仮定すると、一見すると配列のすべての負の数を基本的に合計すると思う。 – Voo
宿題私は推測する? – kmarks2
私は宿題の上で研究学術のコードに賭けています。ひどいやり方で意味をなさない仕事をしますか?これはライブシステムの生産コードですが... – Thomas