2017-09-20 1 views
2
class IncreasingSeries { 
    public static void main(String args[]) { 
     int no, i, max = 0, counter = 0, temp = 0; 
     System.out.println("Generated values are : "); 
     //Random Numbers are generated and checked. 
     for (i = 1; i <= 10; i++) { 
      no = (int)(Math.random() * 100); 
      System.out.print(no + " "); 
      if (no > max) { 
       max = no; 
       counter++; 
      } else { 
       if (temp < counter) temp = counter; 
       max = 0; 
       counter = 1; 
      } 
     } 
     if (counter >= temp) System.out.println("\n The length of the longest increasing series is " + counter); 
     else System.out.println("\n The length of the longest increasing series is " + temp); 
    } 
} 

In einigen der Werte ist die Antwort richtig, aber für einige Werte ist die Ausgabe 1 mehr die tatsächliche Antwort. für zB: 99,87,25,6,57,29,40,29,4,37. Die Ausgabe sollte 2 sein.Generieren Sie 10 zufällige no und zeigen Sie die Länge der längsten zunehmenden Serie in Java ohne Array oder irgendetwas

Antwort

2

Das Problem liegt an dem Ort, an dem Sie max zurücksetzen. Wenn Sie eine Nummer zu sehen, die niedriger ist als die aktuelle max ist, sollten Sie es als aktuelle max und dann den Zähler zurücksetzen:

 else { 
      if(temp<counter) 
       temp=counter; 
      max=no; // <-- this line is changed! 
      counter=1; 
     } 
0

Um dies zu tun, können Sie den folgenden Code verwenden, die drei Variablen zu verfolgen der Staat. Die Zufallszahl r wird mit der letzten generierten Zahl verglichen, und wenn sie größer als oder gleich der letzten Zufallszahl ist, wird increaseCount um 1 inkrementiert. Wir verwenden auch eine andere Variable maxIncrease, um das Maximum von allen throughCount-Strähnen zu speichern. Wenn die Zufallszahl kleiner als die letzte Zahl ist, setzen wir die Anzahl der Erhöhungen zurück.

int maxIncrease = 0; 
    int increaseCount = 0; 
    int last = 0; 

    for (int i = 0; i < 10; i++) { 
     int r = (int) (Math.random() * 1000); 
     System.out.println(r); 
     if (r >= last) { 
      increaseCount++; 
      if(increaseCount > maxIncrease) 
       maxIncrease = increaseCount; 
      last = r; 
     } else { 
      increaseCount = 0; 
     } 

    } 
    System.out.println("Max streak was: " + maxIncrease); 
Verwandte Themen