题目要求读明白后就可以发现,
只要用数组(排序后)内第一项(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 人评分
不容易系列2 (C语言代码)浏览:641 |
C语言程序设计教程(第三版)课后习题8.3 (C语言代码)浏览:693 |
C语言程序设计教程(第三版)课后习题6.2 (C语言代码)浏览:1432 |
C语言程序设计教程(第三版)课后习题6.10 (C语言代码)浏览:588 |
C语言训练-数字母 (C语言代码)浏览:670 |
C语言程序设计教程(第三版)课后习题11.8 (C语言代码)浏览:910 |
WU-判定字符位置 (C++代码)浏览:1471 |
DNA (C语言代码)浏览:564 |
母牛的故事 (C语言代码)浏览:739 |
C语言训练-数字母 (C语言代码)浏览:648 |