算法练习
文章平均质量分 60
Sharing_Li
已于2015停止维护
展开
-
最大回文数问题
输入任意内容一行字符串s(长度小于5000),求最大回文字母串。不考虑大小写和非字母符号,原样输出,如果有多个字母串,则输出最左边的一个,例如:输入:CdasdU:3Madam,I'm Adam.输出::3Madam,I'm Adam.代码如下:#include #include #include char s[5000];int main(){ in原创 2013-03-22 20:36:45 · 1462 阅读 · 0 评论 -
幂的精度问题
描述对数值很大、精度很高的数进行高精度计算是一类十分常见的问题。比如,对国债进行计算就是属于这类问题现在要你解决的问题是:对一个实数R( 0.0,要求写程序精确计算 R的 n 次方(Rn),其中n是整数并且 0 。输入输入有多行,每行有两个数R和n,空格分开。R的数字位数不超过10位。输出对于每组输入,要求输出一行,该行包含精确的 R 的 n 次方。输出需要去掉前导的原创 2013-05-07 15:01:59 · 876 阅读 · 0 评论 -
上三角问题
方阵的主对角线之上称为“上三角”。请你设计一个用于填充n阶方阵的上三角区域的程序。填充的规则是:使用1,2,3….的自然数列,从左上角开始,按照顺时针方向螺旋填充。例如:当n=3时,输出:1 2 36 45当n=4时,输出:1 2 3 49 10 58 67当n=5时,输出: 1 2 3 4 5 12 13 14 6 11原创 2013-03-27 21:03:06 · 830 阅读 · 0 评论 -
购物卷购物问题
公司发了某商店的购物券1000元,限定只能购买店中的m种商品。每种商品的价格分别为m1,m2,…,要求程序列出所有的正好能消费完该购物券的不同购物方法。程序输入:第一行是一个整数m,代表可购买的商品的种类数。接下来是m个整数,每个1行,分别代表这m种商品的单价。程序输出:第一行是一个整数,表示共有多少种方案第二行开始,每种方案占1行,表示对每种商品购买的数量,中间用空格分隔原创 2013-03-28 15:30:34 · 1120 阅读 · 0 评论 -
Playfair密码变种加密
一种Playfair密码变种加密方法如下:首先选择一个密钥单词(称为pair)(字母不重复,且都为小写字母),然后与字母表中其他字母一起填入至一个5x5的方阵中,填入方法如下:1.首先按行填入密钥串。2.紧接其后,按字母序按行填入不在密钥串中的字母。3.由于方阵中只有25个位置,最后剩下的那个字母则不需变换。如果密钥为youandme,则该方阵如下: y o u a nd原创 2013-03-28 21:25:17 · 1299 阅读 · 0 评论 -
汉诺塔问题
汉诺塔问题基本上是我们接触的最早的递归题目之一,一般课本都把它作为经典案例。对于一些递归问题,我们应该从宏观上构思,再处理细节问题。此题可以把初始状态看成n和n - 1两个部分:先把n - 1移到b柱子,再把n移到c柱子,然后把n - 1移到c柱子。代码如下:#includeusing namespace std;void Move(int n,char start,ch原创 2013-04-01 21:27:31 · 841 阅读 · 0 评论 -
五个砝码问题,三种解法
5个砝码用天平称重时,我们希望用尽可能少的砝码组合称出尽可能多的重量。如果只有5个砝码,重量分别是1,3,9,27,81。则它们可以组合称出1到121之间任意整数重量(砝码允许放在左右两个盘中)。本题目要求编程实现:对用户给定的重量,给出砝码组合方案。例如:用户输入:5程序输出:9-3-1用户输入:19程序输出:27-9+1 要求程序输原创 2013-04-05 11:56:33 · 6957 阅读 · 5 评论 -
格子中移动字母问题
2x3=6个方格中放入ABCDE五个字母,右下角的那个格空着。如图1所示。在格子中移动字母_________________|__A__|__B__|__C__||__D__|__E__|_____| 和空格子相邻的格子中的字母可以移动到空格中,比如,图中的C和E就可以移动,移动后的局面分别是: A B D E C A B CD E为了表示原创 2013-04-07 17:32:20 · 2013 阅读 · 0 评论 -
除法表达式问题
有这样一个表达式:X1 / X2 / X3/... /Xn,n个正整数相除。对于表达式1/2/1/2 = 1/4。如果加入括号(1/2) / (1/2) = 1。要求:先输入n,表示有n个数相除,然后输入n个正整数,编程判断是否可以通过添加括号,使表达式的值为整数。n 分析: 可以发现X2一直是分母,而其它数都可以为分子。所以只要判断除X2外的其它数相乘能否整数X2就可以了,代原创 2013-04-12 11:12:30 · 892 阅读 · 0 评论 -
小球下落问题
一个二叉树的深度为D,有 I(i的大写) 个小球,每个小球依次从头结点开始下落,每个结点处有个开关,若开关关闭,则往左边走,若开关打开,则往右边走。求最后一个小球小落的最终位置。输入多组数据,每组数据第一行为D(方法一:思想:若结点按层序遍历的编号为k,则其做孩子编号为k * 2,有孩子编号为k * 2 + 1。代码如下:#include #include const原创 2013-04-27 17:29:55 · 1044 阅读 · 0 评论 -
根据前序和中序遍历确定后序遍历
#include #include char str1[100],str2[100],str[100];void Create(int n,char * str1,char * str2,char * str){ if (n <= 0) return; int len = strchr(str2,str1[0]) - str2;//strchr查找根结点在中序中的位置 Creat原创 2013-04-27 18:47:41 · 1730 阅读 · 0 评论 -
素数环问题
输入正整数n,把整数1,2,3,......,n组成一个环,使得相邻来两个整数之和均为素数。输出时从整数1开始逆时针排列。同一个环应恰好输出一次。n此题用回溯法解决,代码如下:#include int n;//n <= 16//prime数组用于保存1到n中任两个数组成的素数,can数组保存满足题意的结果,vis数组用于标记int prime[32],can[16] = {1},vi原创 2013-04-08 17:55:25 · 2078 阅读 · 0 评论 -
八皇后问题
老问题,用到回溯法。对于每一个皇后,在每行每列都可以放,她事先不知道会不会和其他皇后产生冲突,如果有冲突的话,则换个地方,直到放的地方不和其她皇后产生冲突。代码如下:#include #include using namespace std;const int MAX = 8;int count;//统计有多少解class Queen{private: int原创 2013-04-02 17:16:09 · 761 阅读 · 0 评论 -
单词匹配
先输入一行单词表,以******结束输入,再输入如果单词。每输入一个单词s,你都需要在单词表中找出所有可以用s的字母重排后得到的单词,并按照字典序从小到大的顺序在一行中输出(如果不存在,输出:( ),输入单词间用空格或空行隔开,所有输入的单词都有不超过六个小写字母组成。字典中的单词不一定按顺序排列。如:输入:tarp given score refund only trap work原创 2013-03-23 21:04:29 · 1060 阅读 · 0 评论 -
全排列问题
有1、2、3、4、5、6六个数,对其进行全排列并输出种数。如1、2、3的全排列为123、132、213、231、312、321共6种。我们可以怎么想,所有排列,要么1开头要么2开头要么3开头......要么6开头,然后假设在以1开头的全排列中,再同样思考,1后面的5个数,除了1外,要么以2开头要么3开头......要么6开头,然后假设在以2开头的全排列中,同样思考,2后面的4个数,除1、2外,原创 2013-03-18 19:57:25 · 814 阅读 · 0 评论 -
字符串匹配问题
有字符串A = "abc",B = "abc",C,则C = A * B = "abcabc",所以C^2 = C * C = "abc" * "abc" = "abcabc"。要求:输入任意长度1~1000000的字符串S,S = M ^ n,求n的最大值。如输入aaaa,因为"aaaa" = a * a * a * a = a ^ 4 = "aa" * "aa" = "aa" ^ 2 = "原创 2013-03-20 20:37:43 · 880 阅读 · 0 评论 -
约瑟夫问题
n个孩子围成一圈,给他们编号1~n,从1号开始报数,数到m的孩子出去,然后继续出去的下一个孩子报数,求最后剩下的孩子的编号本程序用的有头结点的循环链表实现的,大家可以用无头结点的循环链表来实现或用求模的方法实现。代码如下://约瑟夫问题#include using namespace std;templatestruct Node { T data; Node *原创 2013-03-21 21:31:04 · 783 阅读 · 0 评论 -
cantor的数表
有如下数列,第一项是1/1,第二项是1/2,第三项是2/1,第四项是3/1,第五项是2/2......输入n,输出第n项。1/1 1/2 1/3 1/4 1/52/1 2/2 2/3 2/43/1 3/2 3/34/1 4/25/1例如输出:14 3 7 2/4 2/11/4分析:数表的顺序原创 2013-03-24 11:21:39 · 1346 阅读 · 0 评论 -
1到n,n个数的最小公倍数
为什么1小时有60分钟,而不是100分钟呢?这是历史上的习惯导致。但也并非纯粹的偶然:60是个优秀的数字,它的因子比较多。事实上,它是1至6的每个数字的倍数。即1,2,3,4,5,6都是可以除尽60。我们希望寻找到能除尽1至n的的每个数字的最小整数。不要小看这个数字,它可能十分大,比如n=100, 则该数为:6972037522971247716453380893531原创 2013-03-29 18:10:07 · 9932 阅读 · 0 评论 -
大整数相乘
计算机的精度是有限的,因此单独使用程序设计语言提供的数据类型来完成两个大整数的乘法显然不切实际。可以考虑用两个数组分别存放大数的每一位数,然后进行计算。代码如下:#include#includeusing namespace std;int * multiply(int * num1,int size1,int * num2,int size2);//计算乘积int m原创 2013-03-19 13:41:48 · 721 阅读 · 0 评论 -
荷兰国旗问题
荷兰的国旗由红色、白色和蓝色3种颜色组成。现在假设有很多这3种颜色的线被存放在一个数组里,要求每次操作仅能进行一次交换,在原数组的基础上操作。待对数组进行一遍扫描后,3种颜色自然分开,颜色顺序为红、白、蓝。另外,要求在O(n)的复杂度下,是移动次数最少。//荷兰国旗问题#include #include using namespace std;const int N = 1原创 2013-03-17 17:27:21 · 973 阅读 · 0 评论 -
ZOJ 1002 Fire Net
Suppose that we have a square city with straight streets. A map of a city is a square board with n rows and n columns, each representing a street or a piece of wall.A blockhouse is a small castle th原创 2013-01-12 14:59:34 · 694 阅读 · 0 评论 -
因子和阶乘
输入正整数(2输入:5 53输出:5!= 3 1 153! = 49 23 12 8 4 4 3 2 2 1 1 1 1 1 1 1分析:首先考虑n!如果非常大的话会发生溢出。但此不用考虑,可以单个单个统计n!的每一个乘数,例如5!,首先先看5,5 = 5 ^ 1 = 1,然后看4,4 = 2 ^2 = 2,再看3,3 = 3 ^ 1 = 1,再看2,2 = 2 ^原创 2013-03-24 15:18:30 · 1391 阅读 · 0 评论 -
取球游戏
取球游戏今盒子里有n个小球,A、B两人轮流从盒中取球,每个人都可以看到另一个人取了多少个,也可以看到盒中还剩下多少个,并且两人都很聪明,不会做出错误的判断。我们约定: 每个人从盒子中取出的球的数目必须是:1,3,7或者8个。轮到某一方取球时不能弃权!A先取球,然后双方交替取球,直到取完。被迫拿到最后一个球的一方为负方(输方)请编程确定出在双方都不判断失误的情况下原创 2013-04-29 15:27:38 · 867 阅读 · 0 评论 -
矩形个数
描述 在一个3*2的矩形中,可以找到6个1*1的矩形,4个2*1的矩形3个1*2的矩形,2个2*2的矩形,2个3*1的矩形和1个3*2的矩形,总共18个矩形。给出A,B,计算可以从中找到多少个矩形。输入本题有多组输入数据(输入2个整数A,B(1输出输出找到的矩形数。 样例输入1 23 2样例输出318 联想排列组合代码如下:#i原创 2013-05-01 15:08:42 · 856 阅读 · 0 评论 -
过河问题
描述 在漆黑的夜里,N位旅行者来到了一座狭窄而且没有护栏的桥边。如果不借助手电筒的话,大家是无论如何也不敢过桥去的。不幸的是,N个人一共只带了一只手电筒,而桥窄得只够让两个人同时过。如果各自单独过桥的话,N人所需要的时间已知;而如果两人同时过桥,所需要的时间就是走得比较慢的那个人单独行动时所需的时间。问题是,如何设计一个方案,让这N人尽快过桥。输入第一行是一个整数T(1每组转载 2013-05-04 11:14:11 · 866 阅读 · 0 评论 -
Piotr's Ants(蚂蚁)
Piotr likes playing with ants. He has n of them on a horizontal poleL cm long. Each ant is facing either left or right and walks at a constant speed of 1 cm/s. When two ants bump into each other, they原创 2013-04-17 12:48:05 · 711 阅读 · 0 评论 -
Even Parity(偶数矩阵)
We have a grid of size Nx N. Each cell of the grid initially contains a zero(0) or a one(1).The parity of a cell is the number of 1s surrounding that cell. A cell is surrounded by at most 4 cells (t原创 2013-04-20 12:43:26 · 1593 阅读 · 0 评论 -
palindrome (回文词)
A regular palindrome is a string of numbers or letters that is the same forward as backward. For example, the string"ABCDEDCBA" is apalindrome because it is the same when the string is read from left原创 2013-04-26 13:28:27 · 921 阅读 · 0 评论 -
Graveyard(墓地雕塑)
在一个周长为10000 的圆上等距分布着n 个雕塑。现在又有m 个新雕塑加入(位置可 以随意放),希望所有n+m 个雕塑在圆周上均匀分布。这就需要移动其中一些原有的雕塑。 要求n 个雕塑移动的总距离尽量小。【输入格式】 输入包含若干组数据。每组数据仅一行,包含两个整数n 和m(2≤n≤1 000,1≤m ≤ 1 000),即原始的雕塑数量和新加的雕塑数量。输入结束标志为文件结束符(EO原创 2013-04-16 17:30:23 · 887 阅读 · 0 评论 -
Spreading the Wealth (分金币)
A Communist regime is trying to redistribute wealth in a village. They have have decided to sit everyone around a circular table. First, everyone has converted all of their properties to coins of equa原创 2013-04-15 21:12:53 · 610 阅读 · 0 评论 -
Pie(派)
My birthday is coming up and traditionally I'm serving pie. Not just one pie, no, I have a number N of them, of various tastes and of various sizes. F of my friends are coming to my party and each of原创 2013-04-23 16:35:54 · 1300 阅读 · 0 评论 -
Age Sort(年龄排序)
You are given the ages (in years) of all people of a country with at least 1 year of age. You know that no individual in that country lives for 100 or more years. Now, you are given a very simple task原创 2013-04-23 17:31:56 · 1727 阅读 · 0 评论 -
A Different Task(新汉诺塔问题)
The (Three peg) Tower of Hanoi problem is a popularone in computer science. Briefly the problem isto transfer all the disks frompeg-A to peg-C using peg-B as intermediate one in such away that at no s原创 2013-04-22 21:54:08 · 1123 阅读 · 0 评论 -
Help is needed for Dexter
Dexteris tired of Dee Dee. So he decided to keep Dee Dee busy in a game. The game heplanned for her is quite easy to play but not easy to win at least not for DeeDee. But Dexter does not have time to原创 2013-04-22 20:22:16 · 690 阅读 · 0 评论 -
The Dragon of Loowater(勇者斗恶龙)
Once upon a time, in the Kingdom of Loowater, a minor nuisance turned into a major problem.The shores of Rellau Creek in central Loowater had always been a prime breeding ground for geese. Due to th原创 2013-04-13 16:41:45 · 916 阅读 · 0 评论 -
Image Is Everything(立方体成像)
有一个 n×n×n 立方体,其中一些单位立方体已经缺失(剩下部分不一定连通)。每个 单位立方体重量为1 克,且被涂上单一的颜色(即6 个面的颜色相同)。给出前、左、后、 右、顶、底6 个视图,你的任务是判断这个物体剩下的最大重量。【输入格式】 输入包含多组数据。每组数据的第一行为一个整数n(1≤n≤10);以下n 行每行从左 到右依次为前、左、后、右、顶、底 6 个视图,每个视图占 n 列,相原创 2013-04-19 19:33:05 · 1097 阅读 · 0 评论 -
Argus问题
编写一个称为Argus的系统。该系统支持一个Register命令 Register Q_num Period该命令注册了一个触发器,它每Period秒钟会产生一次编号为Q_num的事件。你的任务是模拟出前K个事件。如果多个事件同时发生,先处理Q_num小的事件。输入格式:输入仅包含一组数据。前若干行是Register命令,以”#“结尾;最后一行原创 2013-06-26 20:49:27 · 976 阅读 · 0 评论 -
柏松分酒解析
有一个12品脱(pint)的酒瓶,里面装满葡萄酒,另有8品脱和5品脱的瓶子各一个。问如何从中分出6品脱的酒出来?传说泊松年轻时成功解决了该问题,勾起了他对数学的兴趣而投身数学研究,因此该问题被称为泊松分酒问题。另外这个问题又被称为分油问题啦,分水问题啦等等。小学的时候在一本《十万个问什么——数学卷》中看到过这个问题,那本书直接给出了一个解答过程,又没说原理,看得我糊里糊涂。转载 2013-05-04 15:53:10 · 1499 阅读 · 0 评论 -
裴波那契大数相加问题
现在给你m个1,你可以把2个1组合成一个2111 可以拆分为 111 、12、 21 有三种输入第一行输入一个n表示有n个测试数据以下n行,每行输入m个1(1 输出输出这种组合种数,占一行样例输入31111111111样例输出238代码如下:#include #include#includeusing namesp原创 2013-05-06 13:46:48 · 796 阅读 · 0 评论