
算法
niliushall.
这个作者很懒,什么都没留下…
展开
-
A+B Problem III -- ACM解决方法
A+B Problem III 描述求A+B是否与C相等。输入T组测试数据。每组数据中有三个实数 A,B,C(-10000.0<=A,B<=10000.0,-20000.0<=C<=20000.0).数据保证小数点后不超过4位。输出如果相等则输出Yes不相等则输出No样例输入3-11.1 +11.1 011 -11.25 -0.251 2 +4样例输出YesYesNo===原创 2017-05-30 13:01:24 · 494 阅读 · 0 评论 -
最长公共子序列
何为最长公共子序列?百度百科定义如下:一个序列 S ,如果分别是两个或多个已知序列的子序列,且是所有符合此条件序列中最长的,则 S 称为已知序列的最长公共子序列。首先,我们来介绍一下子串与子序列 的区别:子串是一个字符串中的连续字符的集合;子序列是一个字符串中任意字符的集合,不一定要连续。然后,如何来求得最长公共子序列呢?最直接的一种方法就是暴力求解,通过比较两个字符串的所有子序列,得到公原创 2018-02-03 22:58:15 · 499 阅读 · 0 评论 -
Ananagrams Uva 156
Ananagrams (map的使用) Most crossword puzzle fans are used to anagrams–groups of words with the same letters in different orders–for example OPTS, SPOT, STOP, POTS and POST. Some words however do not...原创 2018-02-11 18:16:30 · 398 阅读 · 0 评论 -
二维map —— HDU1263
水果 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 8752 Accepted Submission(s): 3482Problem Description夏天来了~~好开心啊,呵呵,好多好多水果~~Joe经营原创 2018-02-06 21:54:55 · 401 阅读 · 0 评论 -
最佳加法表达式
最佳加法表达式 题意描述输入n个数字,给m个加号,将所有加号任意放在n个数字中某位置,要求最终得到的加法表达式的结果最小。INPUT4 2 1 2 3 4OUTPUT19分析本题使用动态规划,将原问题分解为:求前i个数字中放入m-1个加号的最佳加法表达式的值,再加上最后剩余数字的值。即dp[n][m] = Min{ dp[i][m-1] + Num[i+1][原创 2018-02-07 17:50:48 · 1069 阅读 · 0 评论 -
CodeForce 2A —— Winner
A. Winner The winner of the card game popular in Berland “Berlogging” is determined according to the following rules. If at the end of the game there is only one player with the maximum number of p...原创 2018-03-01 17:25:13 · 715 阅读 · 0 评论 -
[codevs] 1098 均分纸牌
均分纸牌 题目描述 Description有 N 堆纸牌,编号分别为 1,2,…, N。每堆上有若干张,但纸牌总数必为 N 的倍数。可以在任一堆上取若于张纸牌,然后移动。 移牌规则为:在编号为 1 堆上取的纸牌,只能移到编号为 2 的堆上;在编号为 N 的堆上取的纸牌,只能移到编号为 N-1 的堆上;其他堆上取的纸牌,可以移到相邻左边或右边的堆上。 现在要求找出一种移动方...原创 2018-03-05 16:55:40 · 286 阅读 · 0 评论 -
c++ STL 全排列
在c++的STL中有函数可以直接对数组元素进行全排列,即next_permutation和pre_permutation,这两个函数都可以实现全排列,只是排列的顺序不同,next_permutation作用为向后排序,而pre_permutation作用为向前排序。需要头文件#include <algorithm>示例#include <iostream>...原创 2018-04-24 22:50:15 · 4483 阅读 · 0 评论 -
链表中环的入口结点
题目链接链表中环的入口结点(牛客网)题目分析类似于追及问题:如何判断有环的存在? 在追及问题中,我们可以用两个速度不同的物体从同一地点出发,如果相遇则证明存在环(可用反证法证明,若不存在环,则速度不同的物体从同一地点出发则一定不会相遇),因此可以类比过来,定义两个指针fast、slow,令两指针以不同速度向后指,则相遇时证明有环存在,若fast指向NULL,则不存在环。怎么找...原创 2018-05-24 23:03:05 · 5008 阅读 · 9 评论 -
Rabbits —— HDU-6227
题意:有n只兔子在不同的位置,任意一只兔子可以跳到其余任两只兔子(必须保证它们中间有空位)中间,问最多可移动多少次?思路:可看作从任一侧的兔子向中间插空,因此可以将所有兔子中间的空位数相加,再减去两侧较小的数字(最左侧两只兔子间距离与最右侧两只兔子间距离的较小的值)。AC代码:#include<iostream>#include<vector>#include<cstring>using n原创 2017-12-21 22:09:16 · 488 阅读 · 0 评论 -
Lowest Common Multiple Plus ——ACM
求n个数的最小公倍数。Input输入包含多个测试实例,每个测试实例的开始是一个正整数n,然后是n个正整数。为每组测试数据输出它们的最小公倍数,每个测试实例的输出占一行。你可以假设最后的输出是一个32位的整数。Sample Input2 4 63 2 5 7Sample Output1270该题只要按顺序向每两个求最小公倍数即可,并将所得倍数与下一个数字再进行运算求最小公倍数,循环最终得到原创 2017-07-19 12:26:03 · 770 阅读 · 0 评论 -
-又见GCD -- ACM解决方法
有三个正整数a,b,c(0Input第一行输入一个n,表示有n组测试数据,接下来的n行,每行输入两个正整数a,b。 Output输出对应的c,每组测试数据占一行。 Sample Input26 212 4Sample Output48------------------------------------------------------------------------原创 2017-05-30 09:26:12 · 1103 阅读 · 0 评论 -
Cake -- ACM解决方法
一次生日Party可能有p人或者q人参加,现准备有一个大蛋糕.问最少要将蛋糕切成多少块(每块大小不一定相等),才能使p人或者q人出席的任何一种情况,都能平均将蛋糕分食. Input每行有两个数p和q. Output输出最少要将蛋糕切成多少块. Sample Input2 3Sample Output 4Hint 将蛋糕切成大小分别为1/3,1/3,1/6,1/6的四块即原创 2017-05-30 09:26:15 · 434 阅读 · 0 评论 -
汉诺塔V - ACM解决方法
Problem Description用1,2,...,n表示n个盘子,称为1号盘,2号盘,...。号数大盘子就大。经典的汉诺塔问题经常作为一个递归的经典例题存在。可能有人并不知道汉诺塔问题的典故。汉诺塔来源于印度传说的一个故事,上帝创造世界时作了三根金刚石柱子,在一根柱子上从下往上按大小顺序摞着64片黄金圆盘。上帝命令婆罗门把圆盘从下面开始按大小顺序重新摆放在另一根柱子上。并且规定,在小圆盘上原创 2017-05-30 09:26:27 · 665 阅读 · 0 评论 -
笨小熊 -- ACM解决方法
描述笨小熊的词汇量很小,所以每次做英语选择题的时候都很头疼。但是他找到了一种方法,经试验证明,用这种方法去选择选项的时候选对的几率非常大! 这种方法的具体描述如下:假设maxn是单词中出现次数最多的字母的出现次数,minn是单词中出现次数最少的字母的出现次数,如果maxn-minn是一个质数,那么笨小熊就认为这是个Lucky Word,这样的单词很可能就是正确的答案。输入第一行数据N(0<原创 2017-05-30 09:26:32 · 584 阅读 · 0 评论 -
括号配对问题 -- ACM解决方法
括号配对问题 (栈的使用)描述现在,有一行括号序列,请你检查这行括号是否配对。输入第一行输入一个数N(0输出每组输入数据的输出占一行,如果该字符串中所含的括号是配对的,则输出Yes,如果不配对则输出No样例输入3[(])(])([[]()])样例输出NoNoYes====================================================原创 2017-05-30 09:26:37 · 523 阅读 · 0 评论 -
阶乘因式分解(一) -- ACM解决方案
阶乘因式分解(一)描述给定两个数m,n,其中m是一个素数。将n(0输入第一行是一个整数s(0输出输出m的个数。样例输入2100 516 2样例输出2415======================================================================解题思路:n!看成一个【1,n】数组,第几个数就是几第m个数是m,能被m原创 2017-05-30 09:26:41 · 456 阅读 · 0 评论 -
邮箱验证 ——ACM
邮箱验证POJ 注册的时候需要用户输入邮箱,验证邮箱的规则包括: 1)有且仅有一个'@'符号 2)'@'和'.'不能出现在字符串的首和尾 3)'@'之后至少要有一个'.',并且'@'不能和'.'直接相连 满足以上3条的字符串为合法邮箱,否则不合法, 编写程序验证输入是否合法Input输入包含若干行,每一行为一个代验证的邮箱地址,长度小于100Output每一行输入对应一行输出 如果验原创 2017-07-18 12:29:17 · 3305 阅读 · 2 评论 -
dfs算法练习
1. Find The Multiple ( POJ 1426)Description Given a positive integer n, write a program to find out a nonzero multiple m of n whose decimal representation contains only the digits 0 and 1. You may原创 2017-07-30 20:43:04 · 1763 阅读 · 0 评论 -
【动态规划】01背包问题
01背包问题 问题描述给定 N 种物品和一个最大载重量为 C 的背包,物品 i 的重量是 wi,其价值为 vi 。问:应该如何选择装入背包的物品,使得装入背包中的物品的总价值最大?问题分析对于每个物品,只能选择装或者不装,不能选择只装物体的一部分,因此不能使用单位重量的价值进行排序的方法(贪心)来解决,需要用到动态规划来解决。动态规划的三个核心最优子结构...原创 2018-06-03 19:49:16 · 4366 阅读 · 0 评论