逻辑题-一道算法或者逻辑面试题,求思路

问题描述

一道算法或者逻辑面试题,求思路

100个面值是1-50随机分布的硬币排成一列,你和另一个人一人一个的取,只能从队列头部和尾部取。如何保证最后你取的硬币面值和比你对手多?

解决方案

保证你取倒数第二张?
还是和最大?
1~50 面值按照谁家的硬币?
美元?

美元面值:
现流通硬币有1 分、5 分、10分、1/4 元、1/2 元、1 元六种面值。
正面与背面所铸图案如下:
1 分 - 正面: Lincoln 林肯 ,背面:林肯纪念堂 5 分 - 正面:Jefferson 杰佛逊 ,背面:杰斐逊的故居

10分 - 正面: Roosevelt 罗斯福 ,背面:火炬,橄榄枝,橡树枝 1/4 元 - 正面:Washington 华盛顿 ,背面: 白头鹰
1/2 元 - 正面:Kennedy 肯尼迪 ,背面:总统专用国徽 1 元 - 正面:Sacagawea 莎卡嘉薇亚 ,背面:飞翔中的白头鹰
此外还发行过采用这六种面值的与上述图案不同的硬币,及5 分、10分、1/4 元、1/2 元、1 元面值的纪念币。
以前还发行过3分的硬币,现已不能流通。

人民币硬币面值
1分,2分,5分,(退出流通了)
1角,5角,1元(正在用):

既然是双端队列,你可以取走当期最大价值的,换成对手,也是如此,如果是求和的话,两种取法选最大,这是01背包
如果是最后一次面值最大,采用中间向两头扩展的办法从而保证能取到最大的

解决方案二:

一道javascript算法面试题
一道别致的算法面试题
网易有道的一道算法面试题

时间: 2025-01-30 00:44:13

逻辑题-一道算法或者逻辑面试题,求思路的相关文章

Javascript中常见的逻辑题和解决方法_javascript技巧

一.统计数组 arr 中值等于 item 的元素出现的次数 function count(arr, item) { var count = 0; arr.forEach(function(e){ //e为arr中的每一个元素,与item相等则count+1 e == item ? count++ : 0; }); return count; } function count(arr, item) { return arr.filter(function(a){ return (a==item);

求解答下面的逻辑题答案

问题描述 求解答下面的逻辑题答案 假如你的儿子是我儿子的父亲,那么我是你的什么? A你的祖父 B你的孙子,C你的儿子,D你的父亲,E你就是我本人,F你的叔叔 解决方案 选D 解决方案二: 看错了,选C 解决方案三: E 本人呀 说的绕口的 解决方案四: 这还用思考吗,当然是父子关系啦啦啦 解决方案五: 逻辑题之解答

经典算法(11) 一道有趣的GOOGLE面试题 --【解法2】

上一篇<白话经典算法系列之十一道有趣的GOOGLE面试题>中对一道有趣的GOOGLE面试题进行了详细的讲 解,使用了类似于基数排序的做法在O(N)的时间复杂度和O(1)的空间复杂度完成了题目的要求,文章发表后 ,网友fengchaokobe在评论中给出了另一种解法,见下图. 文字版: int Repeat(int *a, int n) { for(int i = 0; i < n; i++) { if(a[i] > 0) //判断条件 { if(a[ a[i] ] < 0)

经典算法(10) 一道有趣的GOOGLE面试题

最近在微博上看到一道有趣的GOOGLE面试题,见下图: 文字版: 一个 大小为n的数组,里面的数都属于范围[0, n-1],有不确定的重复元素,找到至少一个重复元素,要求O(1)空 间和O(n)时间. 这个题目要求用O(n)的时间复杂度,这意味着只能遍历数组一次.同时还要寻找重复 元素,很容易想到建立哈希表来完成,遍历数组时将每个元素映射到哈希表中,如果哈希表中已经存在这个 元素则说明这就是个重复元素.因此直接使用C++ STL中的hash_set(参见<STL系列之六 set与hash_set

求助一道算法题,关于数组算法

问题描述 求助一道算法题,关于数组算法 有一个字符串数组{"用户1,商品1,200","用户2,商品2,100","用户3,商品1,300","用户4,商品3,50","用户5,商品3,50"},写的方法需要返回的是{"用户2,商品2","用户3,商品1","用户4,商品3"}也就是说比较下每种商品的最高价格是谁,并返回谁买了,如果价格相同取最先买

一道算法基础题 uva1586

问题描述 一道算法基础题 uva1586 题目链接在这儿 http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=830&page=show_problem&problem=4461 我自己做的代码如下 但是通不过 测了好多数据都没问题 #include<cstdio> #include<cstring> using namespace std; in

《数字逻辑设计与计算机组成》一 2.5 逻辑化简算法

2.5 逻辑化简算法 K图化简是一种图形的方式,只能适用于很小数目的变量,例如4个变量的表达式中.当变量数大于4时,在20世纪50年代中期发明的叫作奎因-麦克拉斯基算法的数学方式更合适于表达式化简.这个算法使用比K图更少的步骤来寻找最小逻辑表达式.最小项被划分成不同的集合,每一个集合都只包含一个在二进制表达中有特殊个1的个数的最小项.考虑例2-5中的表达式f (w, x, y, z) = Σ (0, 2, 3, 4, 5, 6, 7, 8, 10, 12, 13).在二进制中,最小项为0000,

一道算法题,看看大家的思路(续)

"一道算法题,看看大家的思路",看了众多的回复,本人愚钝,没有看明白其中的奥妙.在细细研究<编程之美>中的文章后,终于理解了这个算法的思路.现将这个算法的演算过程以及代码实现(VB2005)赋予其后,和各位交流. 现再将题目复述一遍: 题目描述:有31,-41,59,26,-53,58,97,-93,-23,84十个数.SUM(N,M)表示从第N个数到到第M个数的和.例如:SUM(2,3)=-41+59=18.问:最大的和是多少?对应的N和M是多少? 先不管N和M的计算,直

算法题——一道数字组合的题目的求解

题目:给定一个数字,和一个范围,产生所有在范围内的不重复的数字之和,和等于给定的数字. 举例:给数字12,范围3-6.可以产生以下5个组合: 1.3+3+3+3 2.3+3+6 3.3+4+5 4.4+4+4 5.6+6 要求给出最快实现,并且是非递归. 这是某人给我出的一道算法题.经过考虑,给出了解法.最快的谈不上(算法无止境.人外有人),没有用递归.   还是以题目的例子说明,数字12,范围3-6.给出了5种组合.将这5种组合改写一下 3+3+3+3=3*4+4*0+5*0+6*0 记作:(