题目要求读明白后就可以发现,
只要用数组(排序后)内第一项(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 人评分
求组合数 (C语言代码)浏览:1154 |
C语言程序设计教程(第三版)课后习题8.3 (C语言代码)浏览:1093 |
C语言程序设计教程(第三版)课后习题8.6 (C语言代码)浏览:564 |
C语言程序设计教程(第三版)课后习题10.2 (C语言代码)浏览:1460 |
2005年春浙江省计算机等级考试二级C 编程题(2) (C语言代码)浏览:574 |
字符串比较 (C语言代码)浏览:681 |
格式化数据输出 (C语言代码)浏览:820 |
C语言程序设计教程(第三版)课后习题1.5 (C语言代码)浏览:446 |
整数分类 oj上总是wrong answer浏览:663 |
C语言训练-百钱百鸡问题 (C语言代码)浏览:629 |