JavaRush /Java Blog /Random-IT /Problemi algoritmici
Joysi
Livello 41

Problemi algoritmici

Pubblicato nel gruppo Random-IT
Il punto di forza di JavaRush è l'abbondanza di pratica, che aiuta molto a consolidare il materiale esposto a lezione. Qui, il 95% delle attività si concentra sulla pratica di scrivere programmi applicativi o server. È ottimo per esercitarsi con i materiali presentati nelle lezioni (raccolte, generici, array, multithreading, ecc.) o per creare e rifattorizzare gradualmente problemi con molte classi e le loro interazioni (quelle grandi). Ci sono problemi algoritmici come una boccata d'aria fresca (tutti probabilmente ricordano l'ultimo bonus del livello 20, costruire un elenco ad albero binario), ma il loro numero non è grande. Questo è comprensibile, il corso è dedicato alla pratica applicata e non all'algoritmo (che richiede molta più teoria della cibernetica e matematica). Per coloro che sono in qualche modo simili a me in termini di distrazione a volte e di pratica di maggiori abilità matematiche nella programmazione, consiglio http://codeforces.com/. I problemi possono essere risolti (tra gli altri linguaggi di programmazione) in Java 7/8. Un pool di problemi (oltre a questi vengono organizzate anche competizioni) è disponibile su http://codeforces.com/problemset. Oltre a loro, ci sono concorsi, ecc. Il 100% prende una decisione in un singolo file Java utilizzando il pacchetto predefinito (ovvero, non è specificato alcun pacchetto nel file Java) e il punto di ingresso è public static void main(String[] args). Non ho provato altre opzioni per inviare una soluzione. Fornirò un esempio del problema più semplice (http://codeforces.com/problemset/problem/1/A) con una soluzione (consideralo come un esempio di prova), in modo che tu possa usarlo come spazio vuoto quando risolvi gli altri : import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class task1A { /* Театральная площадь в столице Берляндии представляет собой прямоугольник n × m метров. По случаю очередного юбилея города, было принято решение о замощении площади квадратными гранитными плитами. Каждая плита имеет размер a × a. Какое наименьшее количество плит понадобится для замощения площади? Разрешено покрыть плитами большую поверхность, чем театральная площадь, но она должна быть покрыта обязательно. Гранитные плиты нельзя ломать or дробить, а разрешено использовать только целиком. Границы плит должны быть параллельны границам площади. Входные данные В первой строке записано три целых натуральных числа n, m и a (1 ≤ n, m, a ≤ 10^9). Выходные данные Выведите искомое количество плит. */ public static void main(String[] args) throws IOException { BufferedReader reader = new BufferedReader(new InputStreamReader(System.in)); String[] s=reader.readLine().split(" "); long n = Long.parseLong(s[0]); long m = Long.parseLong(s[1]); long a = Long.parseLong(s[2]); reader.close(); long cntSide1 = n/a + (int) Math.signum(n%a); long cntSide2 = m/a + (int) Math.signum(m%a); System.out.print(cntSide1*cntSide2); } } Dopo aver creato il programma e averlo testato tu stesso, carica il file sul sito web, la verifica inizierà presto e potrai osservarne il processo. Inoltre, puoi visualizzare i dati del test durante il processo di verifica e utilizzarli per correggere il programma se uno dei test fallisce. PS Se l'amministrazione lo considera un annuncio per una risorsa di terze parti, puoi eliminarlo. Anche se personalmente penso che un ulteriore esercizio per il cervello in termini di algoritmi non farà male. PSS Se ci sono altre risorse simili, scrivi nei commenti (preferibilmente in quelle estese - pro, contro ed esempi di problemi di test risolti per un facile inizio per gli altri).
Commenti
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION