编辑代码

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;
    }
}