神仙爱采药

今天的全国大学生算法程序设计大赛,我最可惜的一题!!!!
Description

您是一个神仙,但您很喜欢采药。

您有一个神奇的背包,背包内有VV个格子。

您所在的空间内有一些药,每个药会占用 11 或 22 个格子。

每天可以进行一次如下操作:

采摘一个药材放入背包中,若此时背包中没有多余的格子来放入新的药材,可以先将背包中的若干药材扔出去,至于扔多少以及扔几个,全都由您决定。当然您也可以选择不去进行采摘操作。

每一天结束前,神奇背包中的每个药材都会产生一个药丸。

作为神仙,您知道每天您可以采摘的药材类型(即占用格子数目),注意,当天的药材如果不采摘,在第二天就会消失(当天药材仅限当天采摘)。

为了获得尽可能多的药丸,请您计算最终能获得的药丸数目最多是多少?

Input
给定一个整数 VV 表示背包的格子数量,接下来一行一个由1或2构成的字符串 ss 表示药占用体积的情况。

其中1表示该药占用体积为 11,2表示该药占用体积为 22​。

|s|∣s∣表示天数

V\leq100000,|s|\leq 100000V≤100000,∣s∣≤100000

Output
最多的药丸数目。
在这里插入图片描述
这道题我写出来了,但是!!! 我不会多行输入
代码如下:
public class Test {

public static void main(String[] args) {
    int num =1 ;
    Scanner scanner = new Scanner(System.in);
    int n = scanner.nextInt();
    String s = scanner.nextLine();

    int dayNum = 0;
    int totalNum = 0;
    int[] a = new int[s.length()];
    int number = 0;//背包现有药材占的份额
    for(int i = 1 ;i < s.length();i++) {
        int value = s.charAt(i) -48;
        int c = number + value;
            if (c <= n) {
                number += value;
                a[i] = value;
                dayNum++;
                totalNum += dayNum;
            }
            if (c > n && value == 1) {
                boolean flag = true;
                for (int j = 0; j < a.length; j++) {
                    if (a[j] == 2) {
                        a[j] = 1;
                        number = number-1;
                        flag = false;
                        totalNum += dayNum;
                        break;
                    }
                }
                if(flag)
                totalNum += dayNum;
            }
            if(value == 2 &&c > n){
                totalNum += dayNum;
            }

        }
    System.out.println(totalNum);
    }

}

真的太坑了,气死我了,我的输入方式 是横向输入,没有多行输入 我测试的数据一直不对,一直说我答案错误,真的太可惜了这一题,由于今天比了赛,我就不做Leetcode了,我得去学别的东西了,对于这道题有别的见解的欢迎讨论,!!! 啊啊啊啊啊啊啊啊啊啊啊,真的气死人啊

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

zhao_programmer

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值