编辑代码

#include <iostream>
#include <math.h>
#include <string>
using namespace std;

class Scenicspots {

public:
    string name;
    int days;
    int score;

    Scenicspots(string n, int d, int s) {
        name = n;
        days = d;
        score = s;
    }
};
void GetMaxValue(Scenicspots scenicspotslist[], int count, int daysum);

int main() {

    Scenicspots scenicspotslist[4] = {
    Scenicspots("故宫", 1, 7),
    Scenicspots("颐和园", 2, 8),
    Scenicspots("长城", 3, 9),
     Scenicspots("天坛", 1, 6),
    };
    int size = sizeof(scenicspotslist) / sizeof(Scenicspots);
    GetMaxValue(scenicspotslist, size, 4);

 

    
   

}
void GetMaxValue(Scenicspots scenicspotslist[], int count, int daysum)
{
    int Maxscore = -1;
    int MaxPos = -1;
    for (int i = 0; i < exp2(count); i++)
    {
        int score = 0;
        int days = 0;
        int bit = 0;
        int pos = i;
        for (; pos > 0; pos = pos >> 1)
        {
            if ((pos & 1) == 1)
            {
                days = days + scenicspotslist[bit].days;
                score = score + scenicspotslist[bit].score;
            }
            bit++;
        }
        if (days <= daysum && Maxscore < score)
        {
            MaxPos = i;
            Maxscore = score;
        }


    }
    if (MaxPos > 0) {
        int score = 0;
        int bit = 0;
        cout << "这次选择如下: " << endl;
        for (; MaxPos > 0; MaxPos = MaxPos >> 1)
        {
            if ((MaxPos & 1) == 1)
            {
                cout << scenicspotslist[bit].name;
                cout <<" 需花费" << scenicspotslist[bit].days << "天,";
                cout <<" 评分为" << scenicspotslist[bit].score << endl;
                score = score + scenicspotslist[bit].score;
            }

            bit++;
        }
        cout << "获得最大价值 " << score<<endl;
    }

}