65,211
社区成员
发帖
与我相关
我的任务
分享
#include <iostream>
#include <vector>
using namespace std;
const int totalMoney = 36 + 2; //可以还价2元,可用36、37或38元
const int nFish = 14;
int fishPrice[] = { 6,8,5,7,12,10,9,14,9,7,6,12,14,15 };
void PrintBoughtFish( const vector<int> &boughtFish )
{
static int count = 1;
int total = 0;
vector<int>::const_iterator iter;
cout<<count++<<".\t";
for ( iter = boughtFish.begin(); iter != boughtFish.end(); ++iter )
{
int fishID = *iter;
cout << fishPrice[fishID] << "\t";
total += fishPrice[fishID];
}
cout<<"\t"<<total<< endl;
}
void BuyFish( vector<int> boughtFish, int fishId, int money )
{
if ( money >= 0 && money <= 2 ) //钱刚好用完
{
PrintBoughtFish( boughtFish );
return;
}
else if ( fishId > nFish || money < 0 )
return;
//不买fishId这条鱼
BuyFish( boughtFish, fishId + 1, money );
//买fishId这条鱼
boughtFish.push_back(fishId);
BuyFish( boughtFish, fishId + 1, money - fishPrice[fishId]);
}
int main()
{
int startFishId = 0;
vector<int> boughtFish;
BuyFish( boughtFish, startFishId, totalMoney );
char c;
cin>>c;
return 0;
}