Peršokti į turinį
  • ŽAIDIMAI
  • , ŽAIDIMAI
  • ŽAIDIMAI

Olimpiadinis programavimo uždavinys (C++)


Ši tema yra neaktyvi. Paskutinis pranešimas šioje temoje buvo prieš 1143 dienas (-ų). Patariame sukurti naują temą, o ne rašyti naują pranešimą.

Už neaktyvių temų prikėlimą galite sulaukti įspėjimo ir pranešimo pašalinimo!

Recommended Posts

Reikia pagalbos su olimpiadiniu uždaviniu. Parašiau dalį kodo, bet nesugalvoju pagrindinio algoritmo.  Mane šiek tiek painioja sąlygos sakinys "Jei kuriam nors žaidėjui yra pasirinkimas, tai visi žaidėjai vertina situaciją atsižvelgdami į šio žaidėjo galimą ėjimą."

Sąlyga (2 uždavinys, žaidimas):

https://forumas.ktu.lt/index.php/uzduociu-archyvas/2019-metu-konkursu-uzduotys/132-2019-programavimas-forumas/file

Kodas:

#include <iostream>
#include <fstream>
#include <vector>
#include <string>

class Cordinates
{
public:
    int x;
    int y;
};
void Read(int& n, int& m, std::vector<Cordinates>& player,
    std::vector<Cordinates>& chair);
void Distance(const std::vector<Cordinates>& player,
    const std::vector<Cordinates>& chair,
    std::vector<std::vector<unsigned int>>& distances);

int main()
{
    int n, m;
    std::vector<Cordinates> player;
    std::vector<Cordinates> chair;
    std::vector<std::vector<unsigned int>> distances;
    Read(n, m, player, chair);
    Distance(player, chair, distances);

    return 0;
}

void Read(int &n, int &m, std::vector<Cordinates>& player,
    std::vector<Cordinates>& chair)
{
    std::ifstream fin("U2.txt");
    fin >> n >> m;
    std::string line;
    for (int y = 0; y < n; y++)
    {
        fin >> std::ws;
        std::getline(fin, line);
        for (int x = 0; x < m; x++)
        {
            if (line[x] == 'X') 
                player.push_back({ x, y });
            else if (line[x] == 'L') 
                chair.push_back({ x, y });
        }
    }
    fin.close();
}

void Distance(const std::vector<Cordinates>& player,
    const std::vector<Cordinates>& chair,
    std::vector<std::vector<unsigned int>>& distances)
{
    for (int i = 0; i < chair.size(); i++)
    {
        std::vector<unsigned int> temp;
        for (int j = 0; j < player.size(); j++)
        {
            temp.push_back(abs(player[j].x - chair[i].x) + abs(player[j].y - chair[i].y));
        }
        distances.push_back(temp);
    }
}

 

Redaguota , nario Programmer234
Nuoroda į komentarą
Dalintis per kitą puslapį

Ši tema yra neaktyvi. Paskutinis pranešimas šioje temoje buvo prieš 1143 dienas (-ų). Patariame sukurti naują temą, o ne rašyti naują pranešimą.

Už neaktyvių temų prikėlimą galite sulaukti įspėjimo ir pranešimo pašalinimo!

Prisijungti prie diskusijos

Palikti atsakymą galite iš karto, o užsiregistruoti vėliau. Jeigu jau turite paskyrą mūsų forume, Prisijunkite.

Svečias
Atsakyti šioje temoje...

×   Įklijuotas tekstas turi teksto formatavimą.   Pašalinti teksto formatavimą

  Galimi tik 75 veidukai.

×   Nuoroda buvo automatiškai įterpta.   Įterpti nuorodą paprastai

×   Jūsų ankstesnis pranešimas buvo atkurtas.   Išvalyti redaktorių

×   Jūs negalite įkelti nuotraukas tiesiogiai.Įkelkite arba įdėkite nuotraukas iš URL.

Skelbimai


×
×
  • Sukurti naują...