#718
Mihai a primit de ziua sa un joc de şah special. Tabla jocului are forma pătrată, de dimensiune N dar unele poziţii sunt marcate ca obstacole şi ele nu pot fi ocupate cu piese. În plus, jocul său are o singură piesă, numită “nebun”. Două poziţii pe tablă sunt desemnate ca poziţie iniţială şi poziţie finală. Mihai vrea să determine o modalitate de a deplasa nebunul, cu un număr minim de mutări, astfel încât acesta să ajungă din poziţia iniţială în poziţia finală. Mihai va respecta regulile de mutare a nebunului la jocul de şah, adică din poziţia curentă nebunul se poate muta doar pe diagonală, în oricare dintre cele 4 direcţii, oricâte poziţii deodată dar fără a sări peste obstacole. În plus, Mihai are voie la o excepţie de la această regulă: îi este permis să execute cel mult două mutări după regula de avansare a calului pe tabla de şah.
Dată fiind configuraţia tablei de şah precum şi poziţiile iniţială şi finală ale piesei, se cere determinarea numărului minim de mutări pentru a deplasa piesa între cele două poziţii.
| Problema | Sah2 | Operații I/O |
sah2.in/sah2.out
|
|---|---|---|---|
| Limita timp | 0.3 secunde | Limita memorie |
Total: 32 MB
/
Stivă 8 MB
|
| Id soluție | #58797851 | Utilizator | |
| Fișier | sah2.cpp | Dimensiune | 3.51 KB |
| Data încărcării | 10 August 2025, 22:27 | Scor/rezultat | Eroare de compilare |
sah2.cpp:15:9: error: 'int j1' redeclared as different kind of symbol int i1, j1, i2, j2; ^ In file included from /usr/include/features.h:374:0, from /usr/include/i386-linux-gnu/c++/4.8/bits/os_defines.h:39, from /usr/include/i386-linux-gnu/c++/4.8/bits/c++config.h:426, from /usr/include/c++/4.8/iostream:38, from sah2.cpp:1: /usr/include/i386-linux-gnu/bits/mathcalls.h:238:1: error: previous declaration of 'double j1(double)' __MATHCALL (j1,, (_Mdouble_)); ^ sah2.cpp: In function 'void bfs()': sah2.cpp:32:16: error: invalid conversion from 'double (*)(double)throw ()' to 'std::vector<std::vector<int> >::size_type {aka unsigned int}' [-fpermissive] dist[i1][j1][0] = 0; ^ In file included from /usr/include/c++/4.8/vector:64:0, from sah2.cpp:2: /usr/include/c++/4.8/bits/stl_vector.h:770:7: error: initializing argument 1 of 'std::vector<_Tp, _Alloc>::reference std::vector<_Tp, _Alloc>::operator[](std::vector<_Tp, _Alloc>::size_type) [with _Tp = std::vector<int>; _Alloc = std::allocator<std::vector<int> >; std::vector<_Tp, _Alloc>::reference = std::vector<int>&; std::vector<_Tp, _Alloc>::size_type = unsigned int]' [-fpermissive] operator[](size_type __n) ^ sah2.cpp:33:23: error: invalid user-defined conversion from '<brace-enclosed initializer list>' to 'std::queue<std::tuple<int, int, int> >::value_type&& {aka std::tuple<int, int, int>&&}' [-fpermissive] q.push({i1, j1, 0}); ^ In file included from sah2.cpp:5:0: /usr/include/c++/4.8/tuple:399:17: note: candidate is: constexpr std::tuple< <template-parameter-1-1> >::tuple(const _Elements& ...) [with _Elements = {int, int, int}] <near match> constexpr tuple(const _Elements&... __elements) ^ /usr/include/c++/4.8/tuple:399:17: note: no known conversion for argument 2 from 'double(double)throw ()' to 'const int&' sah2.cpp:33:23: error: converting to 'std::queue<std::tuple<int, int, int> >::value_type {aka std::tuple<int, int, int>}' from initializer list would use explicit constructor 'constexpr std::tuple< <template-parameter-1-1> >::tuple(const _Elements& ...) [with _Elements = {int, int, int}]' q.push({i1, j1, 0}); ^ sah2.cpp:33:23: error: invalid conversion from 'double (*)(double)throw ()' to 'const int&' [-fpermissive] In file included from sah2.cpp:5:0: /usr/include/c++/4.8/tuple:399:17: error: initializing argument 2 of 'constexpr std::tuple< <template-parameter-1-1> >::tuple(const _Elements& ...) [with _Elements = {int, int, int}]' [-fpermissive] constexpr tuple(const _Elements&... __elements) ^ sah2.cpp:33:23: error: conversion to non-const reference type 'std::queue<std::tuple<int, int, int> >::value_type&& {aka class std::tuple<int, int, int>&&}' from rvalue of type 'std::tuple<int, int, int>' [-fpermissive] q.push({i1, j1, 0}); ^ sah2.cpp:44:14: error: expected unqualified-id before '[' token auto [r, c, k] = q.front(); ^ sah2.cpp:47:33: error: 'r' was not declared in this scope int current_dist = dist[r][c][k]; ^ sah2.cpp:47:36: error: 'c' was not declared in this scope int current_dist = dist[r][c][k]; ^ sah2.cpp:47:39: error: 'k' was not declared in this scope int current_dist = dist[r][c][k]; ^ sah2.cpp:65:39: error: no matching function for call to 'std::queue<std::tuple<int, int, int> >::push(<brace-enclosed initializer list>)' q.push({nr, nc, k}); ^ sah2.cpp:65:39: note: candidates are: In file included from /usr/include/c++/4.8/queue:64:0, from sah2.cpp:4: /usr/include/c++/4.8/bits/stl_queue.h:212:7: note: void std::queue<_Tp, _Sequence>::push(const value_type&) [with _Tp = std::tuple<int, int, int>; _Sequence = std::deque<std::tuple<int, int, int>, std::allocator<std::tuple<int, int, int> > >; std::queue<_Tp, _Sequence>::value_type = std::tuple<int, int, int>] push(const value_type& __x) ^ /usr/include/c++/4.8/bits/stl_queue.h:212:7: note: no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'const value_type& {aka const std::tuple<int, int, int>&}' /usr/include/c++/4.8/bits/stl_queue.h:217:7: note: void std::queue<_Tp, _Sequence>::push(std::queue<_Tp, _Sequence>::value_type&&) [with _Tp = std::tuple<int, int, int>; _Sequence = std::deque<std::tuple<int, int, int>, std::allocator<std::tuple<int, int, int> > >; std::queue<_Tp, _Sequence>::value_type = std::tuple<int, int, int>] push(value_type&& __x) ^ /usr/include/c++/4.8/bits/stl_queue.h:217:7: note: no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'std::queue<std::tuple<int, int, int> >::value_type&& {aka std::tuple<int, int, int>&&}' sah2.cpp:83:47: error: no matching function for call to 'std::queue<std::tuple<int, int, int> >::push(<brace-enclosed initializer list>)' q.push({nr, nc, k + 1}); ^ sah2.cpp:83:47: note: candidates are: In file included from /usr/include/c++/4.8/queue:64:0, from sah2.cpp:4: /usr/include/c++/4.8/bits/stl_queue.h:212:7: note: void std::queue<_Tp, _Sequence>::push(const value_type&) [with _Tp = std::tuple<int, int, int>; _Sequence = std::deque<std::tuple<int, int, int>, std::allocator<std::tuple<int, int, int> > >; std::queue<_Tp, _Sequence>::value_type = std::tuple<int, int, int>] push(const value_type& __x) ^ /usr/include/c++/4.8/bits/stl_queue.h:212:7: note: no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'const value_type& {aka const std::tuple<int, int, int>&}' /usr/include/c++/4.8/bits/stl_queue.h:217:7: note: void std::queue<_Tp, _Sequence>::push(std::queue<_Tp, _Sequence>::value_type&&) [with _Tp = std::tuple<int, int, int>; _Sequence = std::deque<std::tuple<int, int, int>, std::allocator<std::tuple<int, int, int> > >; std::queue<_Tp, _Sequence>::value_type = std::tuple<int, int, int>] push(value_type&& __x) ^ /usr/include/c++/4.8/bits/stl_queue.h:217:7: note: no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'std::queue<std::tuple<int, int, int> >::value_type&& {aka std::tuple<int, int, int>&&}' sah2.cpp: In function 'int main()': sah2.cpp:95:14: error: cannot bind 'std::basic_istream<char>::__istream_type {aka std::basic_istream<char>}' lvalue to 'std::basic_istream<char>&&' fin >> N >> i1 >> j1 >> i2 >> j2; ^ In file included from /usr/include/c++/4.8/iostream:40:0, from sah2.cpp:1: /usr/include/c++/4.8/istream:872:5: error: initializing argument 1 of 'std::basic_istream<_CharT, _Traits>& std::operator>>(std::basic_istream<_CharT, _Traits>&&, _Tp&) [with _CharT = char; _Traits = std::char_traits<char>; _Tp = double(double)throw ()]' operator>>(basic_istream<_CharT, _Traits>&& __is, _Tp& __x) ^
www.pbinfo.ro permite evaluarea a două tipuri de probleme:
Problema Sah2 face parte din prima categorie. Soluția propusă de tine va fi evaluată astfel:
Suma punctajelor acordate pe testele utilizate pentru verificare este 100. Astfel, soluția ta poate obține cel mult 100 de puncte, caz în care se poate considera corectă.