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; }
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.
Aihe on jo aika vanha, joten et voi enää vastata siihen.