En tant qu'ingénieur, j'ai décidé de commencer à résoudre les questions passées de ** AtCoder **, pensant qu'il était nécessaire d'étudier volontairement pour gagner en force. Cependant, lorsque j'ai soumis le code suivant en raison du problème de ** naufrage au Japon **, j'étais en colère contre ** Time Limit Exceeded **.
JapanSinksTle.java
import java.io.*;
import  java.util.*;
import static java.lang.System.in;
class Main{
    public static void main(String[] args)throws IOException{
      Scanner sc = new Scanner(System.in);
      int field = sc.nextInt();
      int jRyouiki[] = new int[field];
      int high = 0;
      for(int i = 0; i < field; i++){
        jRyouiki[i] = sc.nextInt();
        if(high < jRyouiki[i]){
          high = jRyouiki[i];
        }
      }   
      int umi = 0;
      int island = 0;
      int islandcnt = 0;
      int maxIsland = 0;
      while(high > umi){
        for(int i = 0; i < field; i++){
          if(umi < jRyouiki[i]){
            island = i + 1;
             if(i == (field-1)){
              islandcnt++;
            }
          }else{
            if(island != 0 ){
              islandcnt++;
            }
            island = 0;
          }
        }
        if(islandcnt > maxIsland){
        	maxIsland = islandcnt;
        }
        umi++;
        islandcnt = 0;
        island = 0;
      }
      System.out.println(maxIsland);
    }
}
Pour être clair, c'est probablement ** la boucle monotone entraîne des temps d'exécution plus longs **. Jusqu'à présent, je pensais que ce serait bien si cela fonctionnait, mais j'essaierai d'appliquer un code intelligent qui ne met pas beaucoup de charge de traitement.
Continuer…
Recommended Posts