题目链接:https://renjie.blog.csdn.net/article/details/127946125
java题解:
package com.company;
import java.util.Scanner;
public class Main20230207 {
static int count=0;//需要的双人自行车数量
static int m=0;
static int n=0;
public static void main(String[] args) {
Scanner in =new Scanner(System.in);
m=in.nextInt();
n=in.nextInt();
int num[]=new int[n];
for(int i=0;i<n;i++){
num[i]=in.nextInt();
}
//是否被占用,1表示即该对应的人有自行车了
int possesBic[]=new int[n];
for(int i=0;i<n;i++){
if(possesBic[i]==0){
if(num[i]==m){
count++;
possesBic[i]=1;//该对应的人有自行车了
}else if(num[i]<m){
possesBic[i]=1;//占用
handleData(num,possesBic,i);
}
}
}
System.out.println(count);
}
static void handleData(int num[],int[] possesBic,int datai){
//存在的组合标志:
boolean flag=false;
for(int i=datai+1;i<n;i++){
if(possesBic[i]==0){
if(num[i]+num[datai]<=m){
possesBic[i]=1;
count++;
flag=true;
}
}
}
//没有匹配时,一个人乘车
if(flag==false){
count++;
}
}
}
个人编写,代码逻辑问题欢迎指出~