题目要求读明白后就可以发现,
只要用数组(排序后)内第一项(l)与最后一项(r)比较是否大于等于价值上限(w)
1、是,表明两者相加在价值上限内。则 l 加一,r 减一
2、否,表明大价值的一侧(r)要单独放置。则 r 减一
参考代码:
package Main; import java.util.Arrays; import java.util.Scanner; public class Main { public static void main(String args[]){ Scanner sc=new Scanner(System.in); int w=sc.nextInt(); int n=sc.nextInt(); int [] str=new int [n]; for(int i=0;i<n;i++){ str[i]=sc.nextInt(); }//输入数据 Arrays.sort(str);//排序 int l,r,temp=0; l=0; r=n-1; while(l<=r){//比较 if(str[l]+str[r]<=w){ l++;r--; } else{ r--; } temp++; } System.out.println(temp); sc.close(); } }
0.0分
0 人评分
字符串输入输出函数 (Java代码)浏览:1440 |
不容易系列2 (C语言代码)浏览:597 |
C语言程序设计教程(第三版)课后习题8.4 (C语言代码)浏览:619 |
C语言程序设计教程(第三版)课后习题1.5 (C语言代码)浏览:530 |
C语言程序设计教程(第三版)课后习题5.7 (C语言代码)浏览:547 |
计算质因子 (C语言代码)浏览:707 |
输入输出格式练习 (C语言代码)浏览:850 |
C语言程序设计教程(第三版)课后习题8.1 (C语言代码)浏览:721 |
筛排处理 (C语言代码)浏览:790 |
C语言程序设计教程(第三版)课后习题8.4 (C语言代码)浏览:560 |