【蓝桥杯算法训练】无聊的逗

import java.util.Scanner;

public class Main
{
          
   
    public static void main(String[] args) {
          
   
        Scanner scanner=new Scanner(System.in);
        int n = scanner.nextInt();
        int[] bars=new int[n];//存每根木棒的长度
        for(int i=0;i<n;i++)
        {
          
   
            bars[i]=scanner.nextInt();
        }
        int[] status=new int[1<<n];//n根木棒一共有1<<n种粘成长棒的方式
        for(int i=0;i<(1<<n);i++)
        {
          
   
            for(int j=0;j<n;j++)
            {
          
   
                if((i&(1<<j))!=0)
                {
          
   
                    status[i]+=bars[j];//为每种方式计算长棒的长度
                }
            }
        }
        int ans=0;
        for(int i=0;i<(1<<n);i++)
        {
          
   
            for(int j=0;j<(1<<n);j++)
            {
          
   
                if((i&j)==0&&status[i]==status[j])//如果两个方式没有木棒是重复的并且是等长的,就更新ans
                {
          
   
                    ans=Math.max(status[i],ans);
                }
            }
        }
        System.out.println(ans);
    }
}
经验分享 程序员 微信小程序 职场和发展