BFS. Поиск по графу.

Andrew Petrushow

Дороу всем, только познакомился с поиском в ширину, и сразу задачу придумал : есть стартовое число, есть конечное, требуется выяснить : можно ли путем умножения на 2 и на 3 прийти от начального числа к итоговому, и если можно, то вывести, за какое число шагов.

include <iostream>

include <queue>

using namespace std;
int x2(int a)
{
return a*2;
}
int x3(int a)
{
return a*3;
}
int main()
{
int a=64;
queue <int> q;
queue <int> n;
int b=1;
q.push(b);
n.push(0);
while (!q.empty())
{

if (q.front()==a)
{
cout«"Found";
break;
}
else if (q.front()<a)
{

q.push(x2(q.front()));
n.push(n.front()+1);
q.push(x3(q.front()));
n.push(n.front()+1);
q.pop();
n.pop();
}
else
{
n.pop();
q.pop();
}

}
if (!q.empty())
{
cout«n.front();
}
else cout«"Not Found";
return 0;
}
Код работает, хочу узнать, можно ли проще его написать было, или эта версия хорошая? Повторюсь, с BFS знаком 1 день.

Andrew Petrushow 3 месяца назадСпасибо 0
1 чел.