赌徒

2023-05-16

1097:赌徒 分数:2

时间限制:1 秒
内存限制:32 兆
特殊判题:


标签

  • 查找
  • 二分查找

题目描述

有n个赌徒打算赌一局。规则是:
每人下一个赌注,赌注为非负整数,且任意两个赌注都不相同。胜者为赌注恰好是其余任意三个人的赌注之和的那个人。如果有多个胜者,我们取赌注最大的那个为最终胜者。
例如,A,B,C,D,E分别下赌注为2、3、5、7、12,最终胜者是E,因为12=2+3+7。

输入格式

输入包含多组测试数据。每组首先输入一个整数n(1<=n<=1000),表示赌徒的个数。
接下来n行每行输入一个非负整数b(0<=b<32768),表示每个赌徒下的赌注。
当n=0时,输入结束。

输出

对于每组输入,输出最终胜者的赌注,如果没有胜者,则输出no solution。

样例输入

5




12
5

16 
64 
256 
1024
0

样例输出

12
no solution

【分析】

(分析过程附加在程序中)

用java语言编写程序,代码如下:

import java.util.Arrays;
import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
		Scanner input = new Scanner(System.in);
		while(input.hasNext()) {
			int n = input.nextInt();
			if(n == 0)
				break;
			
			int[] duzhu = new int[n];
			for(int i = 0; i < n; i++)
				duzhu[i] = input.nextInt();
			
			if(n <= 3) {
				System.out.println("no solution");
				continue;
			}
			
			Arrays.sort(duzhu);
			
			boolean findResult = false;//标志是否找到结果
			int result = 0;//最终胜利者的赌注
			//先假定数组duzhu中下标为i的值为胜利者的赌注,再确定两个“赌注”,
			//通过在数组中寻找第三个使得下标为1的值成为胜利者的赌注的数。
			//查找方法通过二分查找
			for(int i = n - 1; i >= 0; i--) {
				for(int j = 0; j < i; j++) {
					for(int k = j + 1; k < i; k++) {
						int temp = duzhu[i] - duzhu[j] - duzhu[k];
						//寻找数组中使得下标i的值成为胜利者赌注的第三个赌注的下标
						int r = binarySearch(k + 1, i - 1, duzhu, temp);
						//找到成立条件,标志结果,跳出循环
						if(r != -1) {
							findResult = true;
							result = duzhu[i];
							break;
						}
					}
					if(findResult)
						break;
				}
				if(findResult)
					break;
			}
			if(findResult)
				System.out.println(result);
			else
				System.out.println("no solution");
		}
	}
	//在数组src中从下标low到high进行二分查找,查找target
	//若在数组src中找到target,则返回target在数组中的下标,否则返回-1
	public static int binarySearch(int low, int high, int[] src, int target) {
		// TODO Auto-generated method stub
		while(low <= high) {
			int mid = (low + high) / 2;
			if(src[mid] == target)
				return mid;
			if(src[mid] < target)
				low = mid + 1;
			else
				high = mid - 1;
		}
		return -1;
	}
}


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

赌徒 的相关文章

  • 而今迈步从头越|nacos逼我在mac上重新安装java8与环境变量的配置

    nacos逼我迈步从头越 1 写作背景 nacos逼得我重装java 2 java下载 安装 验证3 环境变量的配置3 1 通过指令获取java的安装路径3 2 在配置文件中完善java的路径 xff08 配置环境变量 xff09 3 2
  • 文章本天成|跟我一起来一场简洁易懂的servlet的过滤器Filter的学习吧

    filter的前身今生 0 fiter是什么1 filter有啥用2 filter在哪里3 filter做了啥4 filter代码实现4 1 依赖包4 2 代码4 2 1 MyFirstfilter java4 2 2 MySecondFi
  • 【本文将经常更新】代码评审中的哲学|一起来看看我们进行java代码评审后提出来的意见吧

    Java代码评审中提炼出来的开发规范 1 20220810代码评审总结2 后续代码评审将继续更新 1 20220810代码评审总结 不要出现常量的硬编码 xff1a 请写枚举enum或者静态常量 每个方法必须加注释 xxx toJSONSt
  • 记一次关于如何做好系统的操作日志记录解决方案的探索

    操作记录的3种实现方式 零 导语一 简单粗暴式操作记录二 面向切面编程AOP三 消息中间件MQ四 篇后语 零 导语 操作记录对于一个系统来说重要性不言而喻 xff0c 轻则供系统用户简单查看历史操作信息 xff0c 重则能用来排查系统故障原
  • IDEA:Warning: No artifacts marked for deployment

    与此问题关联的文章 xff0c 如有需要请查看 IDEA xff1a Warning No artifacts configured FIX Warning No artifacts marked for deployment 没有标记为部
  • VC++6.0运行结果界面闪退问题解决方案

    目录 方案一 xff1a 使用 include xff0b system 34 pause 34 方案二 xff1a 加getchar 语句 这类问题之前也遇到过 xff0c 今天总结一下目前可行的解决方案 xff0c 解决方案都是我自己试
  • 浅谈 前缀编码与哈夫曼编码

    目录 关于编码的两个概念 xff1a 1 前缀编码 1 1 前缀编码概念 1 2 前缀编码实例分析 xff08 简洁易懂 xff09 1 3 前缀编码作用 2 哈夫曼编码 2 1 哈夫曼编码概念 2 2 哈夫曼编码的两条性质 2 3 哈夫曼
  • Visual Studio2022创建setup项目

    Visual Studio2022创建setup项目 安装Setup Project方法 xff1a Visual Studio2022 gt 工具 gt 获取工具和功能 T gt 单个组件 xff0c 搜索 Microsoft Visua
  • OpenCV学习笔记二

    图像操作 获取像素值 xff1a 单通道 gray src span class token punctuation span at span class token operator lt span uchar span class to
  • OpenCV学习笔记三

    形态学操作应用 腐蚀 xff1a 跟卷积操作类似 xff0c 结构元素B在图像A上面移动 xff0c B定义其中心为锚点 xff0c 计算B覆盖下A的uida像素值用来替换锚点的像素 膨胀 xff1a 与膨胀过程类似 xff0c 不同的是以
  • OpenCV学习笔记四

    金字塔概念 xff1a 一个图像金字塔是一系列的图像组成 xff0c 最底下一张是图像尺寸最大 xff0c 最上方是图像尺寸最小 高斯金字塔 用来队图像进行降采样从底向上 xff0c 逐层采样得到 xff1b 降采样之后图像大小是原图像MN
  • Android修改SharePreference路径

    ContextImpl里面有一个字段mPreferencesDir xff0c 这个文件目录就是保存了SharePreference路径的 xff0c 只需要修改这个为我们自定义的路径就好了 xff0c 由于ContextImpl是一个隐藏
  • 安卓setContentView

    首先进入activity中找到setContentView方法 xff1a public void setContentView 64 LayoutRes int layoutResID getWindow setContentView l
  • 安卓9.0沉浸式状态栏

    首先我们来了解一下几个设置沉浸式状态栏的基础属性 xff1a 1 View SYSTEM UI FLAG LOW PROFILE xff1a 低调模式 会隐藏不重要的状态栏图标 xff1b 2 View SYSTEM UI FLAG HID
  • 安卓Service生命周期

    官方说明图 startService xff1a 开启一个Service且Service生命周期只与自身有关 xff0c 当调用stopService或者stopSelf时停止 如果多次调用startService xff0c 只有第一次会
  • 阿里2014年校园题目最后一题答案及证明

    该题目来自cdsn的一位网友 xff08 可见http blog csdn net thebestdavid article details 11975809 xff09 xff0c 具体内容如下 xff1a 在黑板上写下50个数字 xff
  • 编程——两种list的翻转方法

    对于题目相信大家都比较熟悉了 xff0c 下面就直接上代码了 xff0c 其中没有给出list的creat函数 xff0c 有兴趣的同学可以自己实现 1 模板node的定义 template lt class T gt class TNod
  • 数组旋转新方法

    题目 xff1a 对一个int数组进行左右任意长度的旋转 xff0c 如 xff1a 原始数组为 1 2 3 4 5 xff0c 左旋两位 xff08 可用 2表示 xff09 得 3 4 5 1 2 xff0c 右旋两位 xff08 可用
  • 常见Linux shell脚本中的“-e -d -f -eq -ne -gt -ge”操作符的含义

    常见shell脚本中的 e d f eq ne gt ge 操作符的含义 xff1a 文件表达式 e filename xff1a 如果filename存在 xff0c 则为真 d filename xff1a 如果filename为目录
  • 基于注解的spring源码解析之总体流程

    基于注解的spring源码解析1 总体流程 总体流程图 Demo代码 span class token keyword public span span class token keyword class span span class t

随机推荐

  • Android ViewBinding 替换 findViewById 的神器

    ViewBinding中文官网 ViewBinding 的出现就是为了替代 findViewById 的 以前我们写完布局后就要在代码中使用 findViewById 方法找到 xml 文件中对应的 view xff0c 这样耗时费力 xf
  • 套接字选项(SO_RCVBUF和SO_SNDBUF)

    有时候我们需要控制套接字的行为 如修改缓冲区的大小 这个时候我们就要学习套接字选项 int getsockopt int sockfd int level int optname void optval socklen t optlen i
  • 欢迎使用CSDN-markdown编辑器

    欢迎使用Markdown编辑器写博客 本Markdown编辑器使用StackEdit修改而来 xff0c 用它写博客 xff0c 将会带来全新的体验哦 xff1a Markdown和扩展Markdown简洁的语法代码块高亮图片链接和图片上传
  • 工作一年,辞职复习半年,考杭电计算机的经验分享

    工作一年 xff0c 辞职复习半年 xff0c 考杭电计算机的经验分享 如果 xff0c 毕业了工作顺利的人大概率是不会去考研的 xff0c 去考研的人 xff0c 大概率是想改变的 题记 2019 4 6 关于我 纠结的人生 为什么考研
  • ICPR-2018-OCR笔记

    2018年第24届国际模式识别大会International Conference on Pattern Recognition ICPR 在北京国家会议中心召开 xff0c 会议从8月20日到24日持续1周时间 有阿里的读光平台的介绍 x
  • centos7 firewalld导致docker网络异常

    centos7 自带防火墙是firewalld 在某下情况下可能导致docker 的某些网络问题 docker 有4种网络模式 xff1a 1 bridge模式 xff08 默认 xff09 xff1a 网桥模式 xff0c 通过虚拟网桥使
  • Linux(centOS)安装yum

    查看是否有安装yum rpm qa grep yum 红框内代表已安装的 xff0c 如果为空代表未安装yum 删除yum下的所有组件 rpm qa grep yum xargs rpm e nodeps 查看原有的yum配置 xff0c
  • Java实现-删除数字

    给出一个字符串 A 表示一个 n 位正整数 删除其中 k 位数字 使得剩余的数字仍然按照原来的顺序排列产生一个新的正整数 找到删除 k 个数字之后的最小正整数 N lt 61 240 k lt 61 N 您在真实的面试中是否遇到过这个题 x
  • CentOS7, CentOS8 firewalld docker 端口映射问题,firewall开放端口后,还是不能访问,解决方案

    启动sqlserver容器 docker run d restart 61 always e 34 ACCEPT EULA 61 Y 34 e 34 SA PASSWORD 61 Abc12345 34 p 1433 1433 name s
  • firewalld 命令大全

    1 firewalld的基本使用 启动 xff1a systemctl start firewalld 查看状态 xff1a systemctl status firewalld 停止 xff1a systemctl disable fir
  • vscode通过文件名查找文件的方法

    vscode通过文件名查找文件的方法 这篇文章给大家分享的是有关vscode通过文件名查找文件的方法的内容 小编觉得挺实用的 xff0c 因此分享给大家做个参考 一起跟随小编过来看看吧 按快捷键ctrl 43 p可以弹出一个小窗 xff0c
  • HTML几种设置水平居中和垂直居中的方式

    水平居中 1 平居中设置 定宽块状元素 当被设置元素为 块状元素 时用 text align xff1a center 就不起作用了 xff0c 这时也分两种情况 xff1a 定宽块状元素和不定宽块状元素 这一小节我们先来讲一讲定宽块状元素
  • 【Django网络安全】如何正确设置跨域

    原文作者 xff1a 我辈李想 版权声明 xff1a 文章原创 xff0c 转载时请务必加上原文超链接 作者信息和本声明 Django网络安全 Django网络安全 如何正确设置跨域 Django网络安全 如何正确防护CSRF跨站点请求伪造
  • 我怎么能只懂得使用Redis呢?(一)

    前言 最近在回顾 amp 学习Redis相关的知识 xff0c 也是本着分享的态度和知识点的记录在这里写下相关的文章 希望能帮助各位读者学习或者回顾到Redis相关的知识 xff0c 当然 xff0c 本人才疏学浅 xff0c 在学习和写作
  • 统计回文子串

    1054 统计回文子串 分数 2 时间限制 xff1a 1 秒 内存限制 xff1a 32 兆 特殊判题 xff1a 否 标签 字符串处理回文串 题目描述 现在给你一个字符串S xff0c 请你计算S中有多少连续子串是回文串 输入格式 输入
  • 小明养猪的故事

    1064 小明养猪的故事 分数 1 时间限制 xff1a 1 秒 内存限制 xff1a 32 兆 特殊判题 xff1a 否 标签 递推 题目描述 话说现在猪肉价格这么贵 xff0c 小明也开始了养猪生活 说来也奇怪 xff0c 他养的猪一出
  • 找新朋友

    1079 找新朋友 分数 1 时间限制 xff1a 1 秒 内存限制 xff1a 32 兆 特殊判题 xff1a 否 标签 简单数学题公约数 题目描述 新年快到了 xff0c 天勤准备搞一个聚会 xff0c 已经知道现有会员N人 xff0c
  • 生物节律

    1084 生物节律 分数 2 时间限制 xff1a 1 秒 内存限制 xff1a 32 兆 特殊判题 xff1a 否 标签 数学题 题目描述 有些人相信 xff0c 人从出生开始就有三个生物周期 这三个生物周期分别是体力 xff0c 情绪和
  • 鸡兔同笼

    鸡兔同笼 已知鸡和兔的总数量为n xff0c 总腿数为m 输入n和m xff0c 依次输出鸡的数目和兔的数目 如果无解 xff0c 则输出No answer 样例输入 xff1a 14 32 样例输出 xff1a 12 2 样例输入 xff
  • 赌徒

    1097 赌徒 分数 2 时间限制 xff1a 1 秒 内存限制 xff1a 32 兆 特殊判题 xff1a 否 标签 查找二分查找 题目描述 有n个赌徒打算赌一局 规则是 xff1a 每人下一个赌注 xff0c 赌注为非负整数 xff0c