java测试开发工程师面试题目_石头剪刀布(百度测试开发工程师面试题)

题目

西西打算和一头小猪进行N轮剪刀石头布,初始时双方的分数都为0,对每一轮而言,如果不是平局则胜者得1分,败者扣1分。

小猪告诉西西它会在其中的M轮出石头,这意味着它会在剩下的N-M轮出剪刀(因为小猪不会出布)。西西想让自己的分数尽可能高,那么在西西足够聪明的情况下,他的分数至少是多少?

输入:输入两个空格隔开的整数N和M,

输出:输出在西西足够聪明的情况下,他的分数可能的最小值

题解:

首先西西不会出剪刀,那就从出布和石头里选,如果在某轮之后小猪所有的石头(或者剪刀)都出完了,就知道后面该怎么出了,如果到最后一轮小猪的石头(或剪刀)还没出完,此时应该是最坏的情况,因为在整个过程中无法确定小猪的石头剪刀怎么出,只能取全出石头或者全出布的最大值作为能获得分数的最小值。(其实本来没想到这么写,看到数据范围到1e9,应该能猜出一点什么了,这么大的数据,一个循环就会崩,应该是直接找数)

C++解法

//包含了C++所有头文件的一个头文件

#include

using namespace std;

int main() {

//M分是布对石头赢得分

//N - M是布对剪刀输的分,

//全出布的时候,M-(N-M)

int n,m;

cin>>n>>m;

//N - M是扣的分,西西出布被小猪扣掉

//输出全输的分,和赢输都有的分对比两个谁的分值更大

cout<

return 0;

}

Java解法

public class Main{

public static void main(String[] args) {

Scanner sc = new Scanner(System.in);

int n = sc.nextInt();

int m = sc.nextInt();

System.out.print(Math.max(n - m, 2 * m - n));

}

}

原文链接:百度笔试

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值