3 / 6
Jul 2017

Witam

Stworzyłem program do transponowania macierzy, działa poprawnie i wydaje mi się, że zrobiłem go najprościej jak to jest możliwe. Cały czas dostaje error: " Przekroczono limit czasu". Co powinienem zrobić?

   public static void main(String[] args) throws IOException {
   Scanner sc = new Scanner(System.in);
   int r,c;
   r = sc.nextInt();
   c = sc.nextInt();
   int tab[][] = new int[r][c];
   for(int i=0;i<r;i++){
    for(int j=0;j<c;j++){
        tab[i][j] = sc.nextInt();
    }
    }
    for(int i=0;i<tab[0].length;i++){
        for(int j=0;j<tab.length;j++){
        System.out.print(tab[j][i]+" ");
        }
    System.out.println();
}

}

  • created

    Jul '17
  • last reply

    Jul '19
  • 5

    replies

  • 1.7k

    views

  • 3

    users

  • 1

    link

Tak i jedynym rozwiązaniem jest napisanie tego w c++ według tego postu, a interesuje mnie rozwiązanie w Javie

nie jedynym, ale najprostszym :slight_smile:

napisałem też tam, jak należy to zrobić w jawie, niestety bez gwarancji zmieszczenia się w czasie - nie jestem zainteresowany pisaniem w jawie, więc nie testowałem

1 year later

do "wint"
Także pisze w javie,
Należy uzyc szybszego BufferedReader /Scanner jest za wolny/.

---------najistotniejszy fragmencik----------------------------------

  BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
  String[] tab;
  
   tab =  br.readLine().split(" ");
   int ileWierszy = Integer.parseInt(tab[0]);
   int ileKolumn = Integer.parseInt(tab[1]);

   
    String[][] tab1=new String[ileWierszy][ileKolumn];
    
    for(int i=0; i<ileWierszy; i++) {
       tab =  br.readLine().split(" ");
       for(int i1=0; i1<ileKolumn; i1++) {
         tab1[i][i1] = tab[i1]; 
       }
    }

Pozdrawiam