赌徒
来源:互联网 发布:知乎风油精帖子链接 编辑:程序博客网 时间:2024/04/30 23:04
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
2
3
5
7
12
5
2
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);elseSystem.out.println("no solution");}}//在数组src中从下标low到high进行二分查找,查找target//若在数组src中找到target,则返回target在数组中的下标,否则返回-1public static int binarySearch(int low, int high, int[] src, int target) {// TODO Auto-generated method stubwhile(low <= high) {int mid = (low + high) / 2;if(src[mid] == target)return mid;if(src[mid] < target)low = mid + 1;elsehigh = mid - 1;}return -1;}}
0 0
- 赌徒
- 赌徒
- 赌徒
- 赌徒心理
- 小赌徒
- 赌徒心里
- 赌徒的日记
- 赌徒策略与机率
- 赌徒破产理论
- “魔鬼交易员”不过是赌徒
- HNCU1097:赌徒(二分)
- 有关赌徒必胜方法
- 赌徒的梦想
- 赌徒心态与玩家忠诚度
- 社交游戏玩家大多是老虎机赌徒
- 幻想一夜暴富 “彩民”变“赌徒”
- [编程题]Be Unique (赌徒下注问题)
- hdu1204(Markov过程,赌徒输光问题变形)
- 新生训练赛round2--H. Can you find it?
- IOS根据ISBN查找书本信息
- Chapter 1. Getting Started
- linux下查找CPU占用过高的代码问题
- three.js 源码注释(七十七)extras/geometries/LatheGeometry.js
- 赌徒
- Qgs开发18-读取栅格数据
- java 启动参数整理
- [翻译]基于WebView开发Web APP
- 详解DAO模式(上)
- 函数引用
- Qgis应用-矢量操作
- Object-c 学习之面向对象的理解
- Chapter 2. Variables and Basic Types