CF 368A.Sereja and Coat Rack(Java实现)
问题分析
简而言之,小明要邀请m个绅士到家,家里有n个挂衣钩,一个挂衣钩要支付i元,如果挂衣钩不够了就要给每个绅士赔d元
思路分析
所以思路就很清楚了,获取n,d,m的值,并用数组存放每个挂衣钩的钱,如果m<=n,那就大赚,如果m>n,那就要赔付(m-n)*d
代码
import java.util.*;
import java.io.IOException;
public class Main {public static void main(String[] args) throws IOException {Scanner sc =new Scanner(System.in);int n= sc.nextInt();//存入nint d= sc.nextInt();//存入dsc.nextLine();//吞回车int[] arr=new int[n];//用于存钩子的价格for (int i=0;i<n;i++){arr[i]= sc.nextInt();//存入}sc.nextLine();//吞回车int m=sc.nextInt();//存入mint re=0;//初始化答案Arrays.sort(arr);//从小到大排序,如果有3个钩子,但只有1位绅士,他肯定选择最便宜的钩子if (m>n){//如果m>n说明钩子不够for (int i=0;i<n;i++){//此处上限是nre+=arr[i];//先算能赚多少}re-=d*(m-n);//再计算要赔多少} else if (m<=n) {//钩子够的情况for (int i=0;i<m;i++){re+=arr[i];//那就算从小到大用m个钩子能赚多少}}System.out.println(re);//输出答案}
}
感谢您能够看到这里,一起见证小何同学的算法学习,如果您有不同的见解,希望能得到您的指点和点悟;如果您是和我一样的同学,也希望这篇文章能对您有所帮助。