2023华为OD机试真题-狼羊过河(JAVA、Python、C++)

2023-10-28

题目描述:
一农夫带着m只羊,n只狼过河,农夫有一条可载x只狼/羊的船;农夫在时或者羊的数量大于狼时,狼不会攻击羊;农夫在不损失羊的情况下,运输几次可以完成运输?(返程不计入次数)
输入描述:
输入参数为 m, n , x;
m 为羊的数量、n为狼的数量、x为可载狼和羊的数量
输出描述:
返回运输次数即可
补充说明:
如果无法完成运输返回0;
 收起
示例1
输入:
5 3 3
输出:
3
说明:
详解:
第一次:2只狼
第二次:三只羊
第三次:2只羊,1只狼
 

import java.util.Scanner;
public class Main{
    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        int m = sc.nextInt();
        int n = sc.nextInt();
        int x = sc.nextInt();
        int counts = 1;
        if(x>m){
            counts++;
            if(n>m&&n<(2*(x-1))){
                counts++;
            }
        }else{
            while(m>0){
                n=n-x+1;
                m=m-x;
                counts++;
            }
        }
        System.out.println(counts);
    }
}
#include <iostream>
using namespace std;
int main(){
    int m,n,x;
    cin>>m>>n>>x;
    int count=0;
    int right_m=0;
    int right_n=0;
    bool flag=true;
    while(m+n!=0 && flag){
        if(x>=m){
            right_m=m;
            if(n<=x-m){
                right_n=n;
                n=0;
                m=0;
                count++;
                continue;
            }else if(x-m>=m){
                right_n+=m-1;
                n-=(m-1);
                m=0;
                count++;
                continue;
            }else{
                right_n+=x-m;
                n-=(x-m);
                m=0;
                count++;
                continue;
            }
        }else if(m==0){
            if(x>=n){
                right_n+=n;
                n=0;
                count++;
                continue;
            }else{
                right_n+=x;
                n-=x;
                if(right_n>=right_m){
                    flag=false;
                    break;
                }                
                count++;
                continue;
            }
        }else{
            int i=0;
            int j=0;
            if((x+right_n+1-right_m)%2==0){
                i=(x+right_n+1-right_m)/2;
                j=x-i;
            }else{
                i=(x+right_n+1-right_m)/2-1;
                j=x-1;
            }
            m-=i;
            n-=j;
            right_m+=i;
            right_n+=j;
            if(m<=n){
                flag=false;
                break;
            }else{
                count++;
                continue;
            }
               
        }
        
    }
cout<<count<<endl;
}

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

2023华为OD机试真题-狼羊过河(JAVA、Python、C++) 的相关文章

随机推荐

  • java.util.ConcurrentModificationException

    增强for底层用了迭代器 会导致遍历的时候修改集合中的元素出现java util ConcurrentModificationException 这是因为ArrayList底层维护了一个modCount用于记录list集合修改的次数 每操作
  • 揭示常见的重构误区

    作者 Danijel Arsenovski译者 张逸 公正地说 NET社区对于重构技术的研究起步太晚 直到今天 Net开发的旗舰产品Visual Studio仍然无法在C 中突破重构的界限 http www martinfowler com
  • java一朵玫瑰花代码

    这是一个简单的 Java 程序 画一朵玫瑰花 import java awt import java awt geom import javax swing public class Rose extends JFrame public R
  • C++动态库制作

    简介 概念 Linux系统 Windows系统中都有静态库 动态库 静态库是链接阶段与某程序指令链接到一块 打包为一个整体 而动态库是程序执行过程中动态装载到内存中的 链接时不打包 命名规则 Linux 静态库 libxxx a 动态库 l
  • [数据分析]-目标检测python删除xml文件中指定name的object类别

    1 问题描述 在整理数据集的时候 由于部分数据集来自网络 其一张图片标注了多个类别 而我们只想使用其中的某些类别 如果不去管那些无效类别 在训练时可能会出错 这就需要我们读取xml文件 根据指定的name名称 删除掉无效的object标注
  • android 4.4中的流媒体渲染过程

    第一次写blog 只是为了记下学习的过程 android中东西很多 架构和流程都很复杂 经常发现以前学习过的很多东西 即使当时看明白没多久就忘记了 只能重新拾起再看 于是想起blog这个东东 写下来总不会忘记 也和别人一起共享 以下基于an
  • 多种马尔可夫链预测方法

    一 基于绝对分布的马尔可夫链预测 步骤1 对历史数据进行分组 步骤2 确定观测值的状态 写出频数矩阵 nij i j E和一步转移概率矩阵 fij i j E 其中fij nij n 1 其中n为样本容量 当n 时 可用频数估计概率 从而得
  • tensorflow2.0(三)----循环神经网络(RNN)

    class DataLoader def init self path tf keras utils get file nietzsche txt origin http s3 amazonaws com text data with op
  • 排序子序列

    问题描述 将一段数组分为若干个排序子序列 排序子序列就是非递增或非递减的排序序列 然后输出至少可以分为几个排序子序列 解决方法 输入数组之后 开始遍历数组 如果数组满足非递增或者非递减 就进入对应的条件判断 然后此时如果i 1的元素依然满足
  • javascript构造函数如果没有形参允许省略圆括号

    javascript构造函数如果没有形参允许省略圆括号 var o new Object var o new Object 两条语句完全等价
  • element-ui表单校验

    默认表单校验 在最外层
  • 【业务功能篇82】微服务SpringCloud-ElasticSearch-Kibanan-docker安装-Nginx安装-进阶实战

    四 ElasticSearch进阶 https www elastic co guide en elasticsearch reference 7 4 getting started search html 1 ES中的检索方式 在Elas
  • ubuntu重装NVIDIA显卡(经过记录)遇到问题到卸载ubuntu再到成功安装

    2019 3 10 本来准备升级英伟达官方驱动下载搭配合适CUDA cuDNN GPU tensorflow 网上教程很多 按照教程下载了显卡匹配的最新驱动 卸载了安装ubuntu后在附加驱动里面自动下载的官方驱动390版本 准备禁止X W
  • 准确记录用户观看视频内容时长

    文章目录 问题的产生 一 从最简单的开始 二 天真可爱法 三 录点法 四 打点法 五 暴力打点法 六 小结 七 大结 问题的产生 to be or not to be that is a question 不是问题解决不了 只是你自己不够努
  • 事件派发代码

    bool QCoreApplication sendEvent QObject receiver QEvent event Q TRACE QCoreApplication sendEvent receiver event event gt
  • 没有扩容机器,抗住了70多倍的流量增长

    欢迎大家前往腾讯云社区 获取更多腾讯海量技术实践干货哦 作者 黄希彤 腾讯云专家工程师 从2012年开始 我们就吧腾讯公司内各个业务的404页面导流给宝贝回家 从2013年开始 我们更开放了404寻亲接入给第三方网站 这些导流给宝贝回家论坛
  • 第14节 在VS中关闭安全周期检查sdl

    项目 gt 属性 gt C C gt 常规 gt SDL检查 gt 否
  • C语言中符号表示什么意思?

    C语言中 gt gt lt lt 分别表示什么意思 举例说明 1 C语言中的 gt gt 意思为 右移后赋值 代码示例为 x 8 x gt gt 3 右移后结果为 00000000 00000000 00000000 00000001 2
  • OPenCV入门学习笔记(5)人脸检测

    检测的一般步骤 加载xml级联分类器 读入图片 灰度化处理图片 进行检测 加载xml级联分类器 face detector cv2 CascadeClassifier haarcascade frontalface default xml
  • 2023华为OD机试真题-狼羊过河(JAVA、Python、C++)

    题目描述 一农夫带着m只羊 n只狼过河 农夫有一条可载x只狼 羊的船 农夫在时或者羊的数量大于狼时 狼不会攻击羊 农夫在不损失羊的情况下 运输几次可以完成运输 返程不计入次数 输入描述 输入参数为 m n x m 为羊的数量 n为狼的数量