先贴上程序,过后总结
<span style="font-size:18px;">#include <vector>
#include <iostream>
using namespace std;
class sol{
public:
vector<int>& way(int N, int M)
{
static vector<int>foundTimes;
static int time = 0;
unsigned int loopOut = 0;
vector<int>qs;
for (int j = 2; j < N; ++j)
{
if ( N%j == 0)
qs.push_back(j);
}
for (auto ite1=qs.begin(); ite1!=qs.end(); ++ite1)
{
if (N<M)
{
int temp = N + *ite1;
if (temp>M)
{
--time;
break;
}
else if(M == temp)
{
foundTimes.push_back(time+1);
--time;
break;
}
else if (temp < M)
{
++time;
way(temp, M);
if (ite1 == qs.end() - 1)
loopOut = 1;
else loopOut = 0;
}
}
else if (N == M)
{
foundTimes.push_back(time);
--time;
break;
}
else if (N > M)
{
--time;
break;
}
}
if (loopOut == 1)
--time;
return foundTimes;
};
int sellectMin(vector<int>T)
{
int min = 100000;
for (auto ite = T.begin(); ite != T.end();ite++)
{
if (*ite != 0 && *ite < min)
min = *ite;
}
return min;
}
}ans;
int main(){
int N1 = 4, M1 = 15;
vector<int>ak;
ak=ans.way(N1, M1);
int solution = ans.sellectMin(ak);
if (solution == 100000)
solution = -1;
printf("最小步数为%d步\n", solution);
for (auto ite = ak.begin(); ite != ak.end(); ite++)
cout << *ite << "one possible answer" << endl;
cin.get();
}</span>