小蓝和小桥的挑战——算法思路

题目链接:1.小蓝和小桥的挑战 - 蓝桥云课 (lanqiao.cn)

        一些简单的算法思路,不用去考虑数组的所有数值,只要看总价值之乘积即可,唯一需要去考虑的就是数组中是否会遇见0,一旦能遇见0,就说明乘积会为0,要加一次操作(不用去考虑加在谁身上)。价值之和也是一样,只需要看在判断一遍数组,确定数组中没有0的存在之后,计算此时的数组的和,如果和为0,就加一次操作(同样不考虑加在谁身上,只要和不为0 就可以)。

程序代码:

package lanqiao;

import java.util.Scanner;

/**
 * 2023/11/29
 */
public class lanqiao3238_小蓝和小桥的挑战 {
    public static void main(String[] args) {
        Scanner scan=new Scanner(System.in);
        int t=scan.nextInt();//测试用例数量
        while (t-->0){
            int n=scan.nextInt();//物品数目
            int[] arr=new int[n];//物品初始价值
            int sum=0;//序列价值之和
            int ans=0;//操作次数
            for (int i=0;i<n;i++) {
                arr[i] = scan.nextInt();
                sum+=arr[i];
                if (arr[i]==0){//只要序列中有0,价值的积都为0,所以只要遇见0,价值就加1
                    ans++;
                }
            }
            if (sum+ans==0)//初始价值之和要加上遇见0时操作的次数,得出的是更新后的新价值之和
                ans++;//如果新价值之和为0,则还需操作一次
            System.out.println("需要操作至少  "+ans+"  次");
        }
    }
}

运行结果:

2
2
0 0
需要操作至少  2  次
3
-1 0 1
需要操作至少  1  次

进程已结束,退出代码为 0

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值