储油点问题是一个经典的递推问题,是关于倒推算法的一个非常典型的应用。下面给出其算法(C++描述):
/**/
/*
Name: sation of oil
Copyright: all right reserved @ lizuding@gmail.com
Author: lizuding@gmail.com
Date: 23-01-08 16:57
Description: sation of oil
*/
#include < iostream >
#include < vector >
using namespace std;
struct OilSation ... {
int no;
int distance;
int oil;
} ;
int main( int argc, char * argv[])
... {
vector<OilSation> vos;
OilSation os;
int dis = 0;
int NoOfOilSation = 1;
os.distance = 0;
while ( dis <= 1000 ) ...{
dis += 500 / ( 2*NoOfOilSation - 1);
os.no = NoOfOilSation;
os.distance = dis;
os.oil = 500 * NoOfOilSation;
vos.push_back(os);
++ NoOfOilSation;
}
cout << "No. " << "storage of oil" << " distance" << endl;
for (vector<OilSation>::iterator itr = vos.begin();
itr < vos.end(); ++ itr) ...{
os = *itr;
cout << os.no << " " << os.oil << " "
<< os.distance << endl;
}
system("pause");
return 0;
}
Name: sation of oil
Copyright: all right reserved @ lizuding@gmail.com
Author: lizuding@gmail.com
Date: 23-01-08 16:57
Description: sation of oil
*/
#include < iostream >
#include < vector >
using namespace std;
struct OilSation ... {
int no;
int distance;
int oil;
} ;
int main( int argc, char * argv[])
... {
vector<OilSation> vos;
OilSation os;
int dis = 0;
int NoOfOilSation = 1;
os.distance = 0;
while ( dis <= 1000 ) ...{
dis += 500 / ( 2*NoOfOilSation - 1);
os.no = NoOfOilSation;
os.distance = dis;
os.oil = 500 * NoOfOilSation;
vos.push_back(os);
++ NoOfOilSation;
}
cout << "No. " << "storage of oil" << " distance" << endl;
for (vector<OilSation>::iterator itr = vos.begin();
itr < vos.end(); ++ itr) ...{
os = *itr;
cout << os.no << " " << os.oil << " "
<< os.distance << endl;
}
system("pause");
return 0;
}