Forum » Znanost in tehnologija » Izdelava algoritma
Izdelava algoritma
![](https://static.slo-tech.com/stili/avatar_gray.gif)
Klemen86 ::
Pozdravljeni!
Imam naslednjo težavo, in sicer bi rad izdelal algoritem, ki mi bo rešil naslednji problem:
X1 Y1 1 ... 1/2
X2 Y2 1 ... 2/2
X3 Y3 0 ... 0
X4 Y4 0 ... 0
X5 Y5 1 ... 1/3
X6 Y6 1 ... 2/3
X7 Y7 1 ... 3/3
Torej imam podatke o X in Y spremenljivkah in primerjam vrednosti obeh spremenljivk: X1 > Y1, zato je v tretjem stolpcu 1, medtem ko je X3 < Y3, zato je v tretjem stolpcu vrednost 0. Torej 1 označuje, da je X večji o Y in 0 ravno obratno.
Stanje, ki ga hočem dobiti v n stolpcu (odvisno od vmesnih korakov je naslednje) = seštevek vseh predhodnih 1 v nizu / maksimalno število 1 v nizu.
Hvala za kakršno koli pomoč.
Imam naslednjo težavo, in sicer bi rad izdelal algoritem, ki mi bo rešil naslednji problem:
X1 Y1 1 ... 1/2
X2 Y2 1 ... 2/2
X3 Y3 0 ... 0
X4 Y4 0 ... 0
X5 Y5 1 ... 1/3
X6 Y6 1 ... 2/3
X7 Y7 1 ... 3/3
Torej imam podatke o X in Y spremenljivkah in primerjam vrednosti obeh spremenljivk: X1 > Y1, zato je v tretjem stolpcu 1, medtem ko je X3 < Y3, zato je v tretjem stolpcu vrednost 0. Torej 1 označuje, da je X večji o Y in 0 ravno obratno.
Stanje, ki ga hočem dobiti v n stolpcu (odvisno od vmesnih korakov je naslednje) = seštevek vseh predhodnih 1 v nizu / maksimalno število 1 v nizu.
Hvala za kakršno koli pomoč.
![](https://static.slo-tech.com/stili/avatar_gray.gif)
Yacked2 ::
Kakšno je število vhodnih vrstic, da vem če je treba paziti na optimizacijo ali lahko nekaj na hitro spacam skupaj.
Korak naprej ni vedno ustrezen...sploh če si na robu prepada!
![](https://static.slo-tech.com/stili/avatar_gray.gif)
Yacked2 ::
import java.util.Scanner; public class primer1 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); //preberemo stevilo vhodnih parov int n = sc.nextInt(); //tabela kamor shranjujemo vhodno podatke int[][] result = new int[n][5]; //stejemo koliko zaporednih parov kjer je x vecji od y smo imeli zaporedoma int stevecVecjih = 0; //sprehodimo se po vhodnih podatkih for(int line = 0; line < n; line++) { //zacasna tabela kamor shranjujemo trenuten vhod int[] dump = new int[5]; //preberemo nasledni par int x = sc.nextInt(); int y = sc.nextInt(); //shranimo v tabelo dump[0] = x; dump[1] = y; if(x > y) { //povecamo stevilo vecjih stevecVecjih++; dump[2] = 1; dump[3] = stevecVecjih; dump[4] = -1; } else { //prekinemo serijo vecjih dump[2] = 0; dump[3] = 0; dump[4] = 0; stevecVecjih = 0; } //shranimo v glavno tabelo result[line] = dump; } sc.close(); //sprehodimo se cez celotno tabelo int i = 0; while (i < result.length) { //ce je x manjsi gremo takoj naprej if(result[i][2] == 0) { i++; } else { //x je vecji, poracunamo se zadnjo vrstico int stevec = 0; for(int j = i; j < result.length; j++) { //iscemo koliko zaporednih vhodov imamo kjer je x vecji od y if(result[j][2] == 1) { stevec++; } else { break; } } //vsem od i-tega do i+stevec-tega nastavimo zadnjo vrsto for(int j = i; j < i+stevec; j++) { result[j][4] = stevec; } //preskocimo ze poracunane i += stevec; } } //izpisemo output for(int a = 0; a < result.length; a++) { if(result[a][2] == 0) { System.out.println("0"); } else { System.out.println(result[a][3] + "/" + result[a][4]); } } } }
Korak naprej ni vedno ustrezen...sploh če si na robu prepada!
![](https://static.slo-tech.com/stili/avatar_gray.gif)
stapler rump ::
Klemen86. nisi povedal, kaj se zgodi, ko sta X in Y enaka. Spodnje sicer izpiše tako tabelo, kot je v tvojem primeru iz podatkov v x in y seznamih:
x = [1, 1, 0, 0, 1, 1, 1] y = [0, 0, 1, 1, 0, 0, 0] from itertools import starmap, groupby i = 1 for j, k in groupby(starmap(lambda i, j: i > j, zip(x, y))): k = list(k) for m, l in enumerate(k): if j: print("X%d Y%d 1 ... %d/%d" % (i, i, m+1, len(k))) else: print("X%d Y%d 0 ... 0" % (i, i)) i += 1
Vredno ogleda ...
Tema | Ogledi | Zadnje sporočilo | |
---|---|---|---|
Tema | Ogledi | Zadnje sporočilo | |
» | Naloga iz Putka - UPMOddelek: Programiranje | 2249 (1585) | NejcSSD |
» | java pomočOddelek: Programiranje | 2021 (1413) | kr?en |
» | BMI kalkulatorOddelek: Programiranje | 1153 (979) | jype |
» | Java - dva problemaOddelek: Programiranje | 1745 (1353) | nightrage |
» | [Java] Kako filtrirati, katera števila lahko vpišeš?Oddelek: Programiranje | 2107 (1809) | fiction |