Forum » Znanost in tehnologija » Izdelava algoritma
Izdelava algoritma

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č.

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!

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!

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 | 2347 (1683) | NejcSSD |
» | java pomočOddelek: Programiranje | 2061 (1453) | kr?en |
» | BMI kalkulatorOddelek: Programiranje | 1206 (1032) | jype |
» | Java - dva problemaOddelek: Programiranje | 1792 (1400) | nightrage |
» | [Java] Kako filtrirati, katera števila lahko vpišeš?Oddelek: Programiranje | 2151 (1853) | fiction |