Java数组练习题2

题目:桌上有 n 堆币,每堆的数量保存在数组 coins 中。我们每次可以选择任意一堆,拿走其中的一枚或者两枚,求拿完所有币的最少次数。

 示例 1:
输入:[4,2,1]
输出:4
解释:第一堆币最少需要拿 2 次,第二堆最少需要拿 1 次,第三堆最少需要拿 1 次,总共 4 次即可拿完。

示例 2:
输入:[2,3,10]
输出:8

解题思路:看似很复杂,实际就难在将用户输入的字符串数组转成整型数组,用一个变量存储再对每一个数组成员进行+1再除2的和即可,代码如下

import java.util.Scanner;
public class Demo2 {
	
	public static void main(String[] args) {
		Scanner input = new Scanner(System.in);
	    System.out.println("输入你的数组(以逗号隔开)");
	    //接收用戶入的数组
	    String in = input.nextLine();
	  //以逗号隔开输入
	    String[] str = in.split(",");
	   //改用int数组存储信息,方便下一步操作
	    int[] arr = new int[str.length];
	    //用于存储次数
	    int count=0;
	    for(int i = 0; i < str.length; i++){
	     //将转化为int类型的数字赋值导int类型数组里
	        arr[i] = Integer.parseInt(str[i]);
	    }
	    for(int j=0;j<arr.length;j++) {
	    	count+=(arr[j]+1)/2;
	    }
	    System.out.print("你输入的"+arr.length+"堆硬币最少需要"+count+"次");
	  System.exit(0);
	}
	
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值