
有趣的编程题
文章平均质量分 78
凛冬烈焰
路漫漫其修远兮,吾将上下而求索。
展开
-
多少种走法?
有一类比较有趣的算法题。题目要求的是,按照一定的规则,在一个一维或二维的空间中,走到某个点,一共有多少种走法。我在这里介绍一下我遇到过的题:1、青蛙跳台阶一只青蛙一次只能跳一阶或两阶台阶,总共要跳n阶(n>=1),求总共有多少种跳法?令f(n)为“跳n级台阶共有多少种跳法”。显然,f(1)=1,f(2)=2。那么当n>2时,我们可以对青蛙的第一步进行分类讨论,它第一步要么跳1阶,要么跳...原创 2018-05-12 15:15:23 · 1418 阅读 · 0 评论 -
拼多多2018暑期实习招聘在线编程题:迷宫寻路
#include<iostream>#include<vector>#include<string> usingnamespace std; void search(constvector<string>& matrix, vector<vector<int>> left, int& result,intsta原创 2018-05-31 21:38:33 · 1674 阅读 · 0 评论 -
从腾讯和阿里的在线编程题说起——回溯法的程序设计特点
有这么一类编程问题,满足如下的几个特性:1、解空间是有限的,并且规模不太大;2、可以从某个解的一部分开始,通过遍历、添加从这个部分开始能够到达的所有可能性,最终能够到达所有的解。3、很难找到一个确保能得到最优解的策略。这些问题往往就能用暴力搜索算法(搜索-回溯)来解决。当然,上面的三点都是我自己的总结,可能会有不严谨的地方。不过基本上八九不离十。这类问题在各大互联网公司的在线编程考题中频繁出现,因...原创 2018-06-06 19:26:12 · 904 阅读 · 0 评论 -
经典算法题:寻找数组中第k大的元素
这算是一道相当经典的算法题了:在长度为N的乱序数组中寻找第k(n>=k)大的元素。扩展思考:如何处理数组中的重复元素?比如,对于数组a={1,2,2,2,3,3,3},第二大的元素应该是3还是2呢?本文作这种分类:如果第二大的元素是3,说明在处理第k大的元素时不处理重复的数据,也就是将原数组进行降序排序后,下标为k-1的元素。这种处理方法称之为“不处理重复数据方法”;如果第二大的元素是2,说...原创 2018-06-13 18:54:06 · 27418 阅读 · 4 评论 -
多线程同步——有序打印数字和字符
问题描述:创建两个线程,一个线程打印1,2,3,……,52,另一个线程打印A,B,C,……,Z。要求打印出来的效果为:12A34B……5152Z交替有序进行。这时候需要使用到线程间通信。线程1每次打印2个数字,线程2每次打印1个字母。线程1打印完后,通知线程2,并阻塞等待线程2的通知。线程2打印完后,通知线程1,并阻塞等待线程1的通知......直到打印完成。#include<Windows...原创 2018-06-06 12:05:27 · 1230 阅读 · 0 评论 -
多线程同步——哲学家吃饭问题
最近在学习多线程编程(WIN32API下和C++11标准),学习过程中想起了在学操作系统的时候出现过的“哲学家吃饭问题”,当时听得云里雾里的,理解并不算透彻。恰好最近在学习多线程同步的知识,恰好可以利用最近所学模拟一下这个过程。一、问题描述二、问题分析哲学家就餐问题需要协调考虑两个问题:1、不能让某个哲学家饿死;2、要尽量提升吃饭的效率,也就是同一时间尽量让多一些哲学家吃饭(最多同时两个)。我们考...原创 2018-06-05 17:39:28 · 8246 阅读 · 1 评论 -
暴力搜索算法的典型应用——24点游戏
“24点”是个棋牌类益智游戏,要求四个数字运算结果等于二十四。这种类型的题目可以通过编写程序让计算机完成。一个更具有普遍性的题目如下:每次给出五个数和一个目标数,让你判断,利用其中的五个数判断能否通过简单的运算(加,减,乘,除)得到那个目标数。如果能则输出目标数,否则输出这五个数能凑到的小于目标数的最大的那个数。备注:并不要求每个数都要用到,另外除法,必须要求能够进行整除,否则就不进行除法;例如,...原创 2018-05-24 21:36:04 · 1198 阅读 · 0 评论 -
携程2018暑期实习招聘在线编程题:房间选择
题目描述:有N种房型,每种房型有如下属性:可入住成人数,可入住儿童数,价格;根据用户输入的X(需入住成人数),Y(需入住儿童数),Z(需入住几晚),返回N种房型的间数及价格。 输出样例(特别说明):输入第一行表示一共有几种房型,设为整型N;接下来的N行,每行三列3(个数)分别表示每种房型能够容纳的成人数、能够容纳的儿童数、单价最后一行的三列(3个数)分别表示需要入住的成人数、儿童数,几晚 输出打出...原创 2018-05-23 11:41:45 · 540 阅读 · 0 评论 -
阿里2018暑期实习招聘在线编程题:订单分配
阿里的在线编程题中有这么一道题:一个淘宝的订单中包含n(10>=n>=1)种商品A1,A2,...,An,每种商品数量分别为a1,a2,...,an个,记做{a1,a2,...,an}(ak>0)。订单在仓库生产过程中,仓库为了提升作业效率,会提前对热门组合商品进行预包装。假设这n个商品有m(9>=m>=1)个商品组合,每个组合bomk包含A1,A2,...,An的数...原创 2018-05-22 20:15:15 · 1754 阅读 · 2 评论 -
科大讯飞2018暑期实习招聘在线编程题:如何分糖果?
原题来源于科大讯飞的一道在线编程题作者:知足常乐_健康第一链接:https://www.nowcoder.com/discuss/76153来源:牛客网小明和小红是好朋友,但最近遇到一个棘手的问题,有一盒糖果要分成两份但是每颗糖果质量都不尽相同,但为了分配的公平每份糖的糖果数量相差不得超过1,在此条件下两份糖果的质量差距尽可能小。输入:一行数,包含一个数n,代表糖果数量,后面一次是n个整数一次表示...原创 2018-05-13 12:06:48 · 2158 阅读 · 0 评论 -
出栈序列有多少种?
在海康威视的面试中,对方问了这么一道题:有一个容量足够大的栈,n个元素以一定的顺序入栈,出栈顺序有多少种?比如,AB两个元素,入栈顺序为AB,出栈情况有两种:(1)入A,出A,入B,出B,出栈顺序为AB;(2)入A,入B,出B,出A,出栈顺序为BA。因此,2个元素时,结果为2。分析:设f(n)为“n个元素以一定的顺序入栈,出栈顺序的种类数”。显然f(1)=1,f(2)=2。我们现在来分析一般情况。...原创 2018-05-06 17:44:52 · 23297 阅读 · 0 评论 -
兔子繁殖问题
这是一道某互联网公司的笔试编程题,我觉得很有意思:猎人把一对兔子婴儿(一公一母称为一对)放到一个荒岛上,两年之后,它们生下一对小兔,之后开始每年都会生下一对小兔(这对小兔也是一公一母的)。生下的小兔又会以同样的方式继续繁殖。兔子的寿命都是x(x>=3)年,并且生命的最后一年不繁殖。如果岛上的兔子多于10对,那么猎人会每年在兔子们完成繁殖或者仙逝之后,从岛上带走两对最老的兔子。请问y年(y&g...原创 2018-05-06 17:22:43 · 1345 阅读 · 0 评论 -
计算中缀表达式
“计算中缀表达式”可以称得上是一个特别经典的关于栈的算法题,几乎在所有数据结构教材中都会涉及,而且很多公司面试或者笔试的时候都会把这道题作为一个考察点。可以说,这是一道必须要掌握的算法题。中缀表达式、后缀表达式等概念在这里就不赘述了,让我们直奔主题。题目:输入一个中缀表达式,计算其结果。输入的前提假设:(1)只考虑+、-、*、/这四种运算符,中缀表达式中只有一种括号:();(2)输入的中缀表达式中...原创 2018-05-06 15:42:10 · 7738 阅读 · 8 评论 -
用动态规划方法找字符串中最长回文子串
LeetCode中有这么一道题:给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为1000。示例 1:输入: "babad"输出: "bab"注意: "aba"也是一个有效答案。示例 2:输入: "cbbd"输出: "bb"回文串的定义我就不啰嗦了。对于这道题,我的第一反应是用动态规划方法解。假设字符串s的长度为length,建立一个length*length的矩阵dp。...原创 2018-05-12 15:25:53 · 13023 阅读 · 6 评论 -
拼多多2018暑期实习招聘在线编程题:同花顺
题目描述:给定一组扑克牌,判断其中是否存在五张扑克牌组成同花顺的牌型。每张扑克牌由花色和点值组成。花色包括:黑桃(S)、红桃(H)、梅花(C)、方片(D);点值从小到大包括:2、3、4、5、6、7、8、9、10、J、Q、K、A。组成同花顺的五张牌需要满足两个条件:1、花色都相同:2、连成顺子,或者点值为A、2、3、4、5;输入描述:每张扑克牌通过花色和点值拼接成的一个字符串表示,例如红桃10为H1...原创 2018-05-31 21:49:27 · 838 阅读 · 0 评论