Kirjautuminen

Haku

Tehtävät

Keskustelu: Koodit: C++: Prioriteettijono

koodaaja [19.02.2021 07:07:52]

#

Esimerkissä käytetään tietorakenteena prioriteettijonoa, jolla voidaan etsiä suurin luku ja ottaa se pois. Ohjelmassa käytetään Floydin kolmion rivin ja sarakkeiden summaa, joka tallennetaan prioriteettijonoon.

#include <iostream>
#include <stdlib.h>
#include <time.h>
#include <queue>
using namespace std;

int main()
{
    //Tietorakenteena käytetään kahta prioriteettijonoa.

    priority_queue<int> q;
    priority_queue<int> q2;

    int luku = 0;
    int a = 0;
    int b = 0;
    int summa = 0;
     q.push(0);
 srand(time(NULL));
 //Esimerkissä käytetään Floydin kolmion rivin ja sarakkeiden summaa.

    for (int x = 0; x < 10; x++){
        luku = rand()%10+1;
        a = 0;
        b = 0;
        summa = 0;
        //Etsitään rivi.
        for (int y = 0; y < luku; y++){
            a += 1;
            b += a;
        }
        //Lasketaan rivin summa.
        for (int y = b-a+1; y <= b; y++){
            summa += x;
        }
        //Katsotaan, onko suurin.
        cout << summa << endl;
        if (summa > q.top()){
            cout << "Suurempi" << endl;
        }
        q.push(summa);

    }
    q2.push(0);
    int lisays = 0;
    cout << endl;
   for (int x = 0; x < 10; x++){
        luku = rand()%10+1;
        a = 0;
        b = 0;
        lisays = 0;
        summa = 0;
        //Etsitään sarake.
        for (int y = 1; y < luku; y++){
            a += 1;
            b += a;
            lisays++;

        }
        //Lasketaan sarakkeen summa.
        for (int y = 0; y < 5; y++){
            summa += b;
            b += lisays;
        }
        cout << summa << endl;
        //Katsotaan, onko suurin
        if (summa > q2.top()){
            cout << "Suurempi" << endl;
        }
        q2.push(summa);

    }
    return 0;
}

Metabolix [19.02.2021 10:40:15]

#

Koodissa et ota suurinta lukua pois vaan ainoastaan tarkastat suurimman luvun, joten on täysin turhaa tilan- ja ajanhukkaa säilyttää kaikki luvut prioriteettijonossa, kun helpommin voisi säilyttää pelkästään suurimman luvun. Lisäksi taas kerran esimerkkisi sisällössä ei ole mitään järkeä. Voisitko joskus ohjelmoida jonkin oikeasti hyödyllisen esimerkin? Prioriteettijonoa voi käyttää vaikka Dijkstran reitinhakualgoritmin toteuttamiseen.

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta