import java.util.ArrayList;
import java.util.List;
class Main {
public static void main(String[] args) {
Destination[] DestinationList = {
new Destination("故宫", 1, 7),
new Destination("颐和园", 2, 8),
new Destination("长城", 3, 9),
new Destination("天坛", 1, 6)
};
int size = DestinationList.length;
GetTheBiggestGrade(DestinationList, size, 4);
}
public static void GetTheBiggestGrade(Destination[] DestinationList, int count, int daysum) {
int Maxscore = -1;
int MaxPos = -1;
for (int i = 0; i < Math.pow(2, count); i++) {
int grade = 0;
int days = 0;
int bit = 0;
int pos = i;
for (; pos > 0; pos >>= 1) {
if ((pos & 1) == 1) {
days += DestinationList[bit].days;
grade += DestinationList[bit].grade;
}
bit++;
}
if (days <= daysum && Maxscore < grade) {
MaxPos = i;
Maxscore = grade;
}
}
if (MaxPos > 0) {
int grade = 0;
int bit = 0;
System.out.println("旅游路线: ");
for (; MaxPos > 0; MaxPos >>= 1) {
if ((MaxPos & 1) == 1) {
System.out.print("景点:"+DestinationList[bit].name+"/");
System.out.print(" 花费为:" + DestinationList[bit].days + "天/ ");
System.out.println("评分为:" + DestinationList[bit].grade);
grade += DestinationList[bit].grade;
}
bit++;
}
System.out.println("总评分为: " + grade);
}
}
}
class Destination {
String name;
int days;
int grade;
public Destination(String n, int d, int s) {
name = n;
days = d;
grade = s;
}
}