ACM算法题
文章平均质量分 51
个银乐迪
闷骚
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
多个数求最小公倍数
思路:求多个数的最小公倍数的思想:先求出两个数的最小公倍数,然后将他们的最小公倍数与第三个数求最小公倍数,由此递推求多个数的最小公倍数。#include #include using namespace std; int gcd(int x,int y) //求两个数的最大公约数 { int r; r=x%y; while(r!=0) { x=y原创 2016-12-11 20:29:06 · 842 阅读 · 0 评论 -
广度搜索加奇偶剪枝
例题:http://acm.hdu.edu.cn/showproblem.php?pid=1010 题目说明:大意为给定一个N*M的迷宫以及起点和终点,迷宫中有一些障碍无法穿过,问能否不重复也不停留地在刚好一共走T步出迷宫。 解题思路:在网上看到的不剪枝的技巧:为了避免多余的边界控制,可以从i=1,j=1开始读迷宫,在读之前将迷宫初始化为全部'X',即都为墙。这样在迷宫读取完毕后,周围就会自动原创 2017-05-07 23:35:12 · 196 阅读 · 0 评论 -
简单的背包最大效益问题
题目链接:点击打开链接 解题代码: #include #include #include using namespace std; void BubbleSort(double b[],int a[][2],int m) { double temp; int temp1,temp2; for(int i=1;i<m;i++) for(int j=m-1;原创 2017-05-03 13:48:38 · 315 阅读 · 0 评论 -
递归大数求模
条件:f(n)=A*f(n-1)+B*f(n-2)%7,f(1)=1,f(2)=1 多组测试输入:A,B,n(n=0结束,0 输出:f(n) 注意:直接递归必定超时。 解题思路:因为f(n)的值必定为0,1,2,3,4,5,6,中的一个,所以f(n)存在7*7=49种值,所以在经过50次递归后必定已经进入循环。 解题代码: #include #include using namespa原创 2017-04-17 09:02:45 · 395 阅读 · 0 评论 -
计算出出现次数最多的字符串
因为这个题目意思太简单了,看一下案例就懂了便不再描述了。注意有多组测试案例,每组案例的字符串数量N(0 输入: 5 green red blue red red 3 pink orange pink 0 输出: red pink 解题代码: #include #include #include using namespace std; bool Is原创 2017-04-14 23:59:15 · 299 阅读 · 0 评论 -
数字分解为不同自然数的最大乘积
须知:任何一个数分解成非1的两个数的乘积必然大于这个数本身,所以根据此道理可知要想使数分解的乘积最大则分解的数越小越好,最好能够全都分解成2.当然大多数情况都不允许重复,所以呢,就必须从2开始往上加,当加到不能在加时必然会有一个余数。如何处理这个余数是个问题?为了使乘积最大应当从已分解得数的数组最小开始尝试加余数,如果加余数后的值大于本数组的最大值,则此时的数组就是最大乘积的情况了。OK 相关水原创 2017-04-12 00:37:57 · 1079 阅读 · 0 评论 -
空间出口搜索问题
POJ2251 Dungeon Master http://poj.org/problem?id=2251 题意: 三维空间,求从S点到E点的最小距离。 思路: 简单bfs搜索,从起点开始压入队列逐渐广搜开直到找到E或者队列为空,注意标记走过的位置。 解题代码: #include #include #include #include using namespace原创 2017-02-10 14:53:55 · 201 阅读 · 0 评论 -
容斥原理
就是把每个区间的大小加到总和上,然后把每两个区间的相交部分减去,把每三个区间的相交部分加上,如此处理…… 所以通常深搜比较好写,设置falg奇数时加上当前值,偶数时减去当前值,重点就是如何让求每一轮的值,注意不要重复, 深搜方向的选择,或者状压存状态,如此,如此…… eg: HDU1796 How many integers can you find http转载 2017-02-10 14:42:03 · 211 阅读 · 0 评论 -
简单搜索之棋盘问题
题意: 在一个棋盘内放k个棋子,每一行每一列都最多只能有一个棋子,求方法数,‘#’为可放的地方。 思路: 直接暴力深搜枚举所有情况即可,每一行选择一个点向下继续深搜,同时a[]储存该列是否已有棋子。 #include #include #include using namespace std; int n,k,summ; int a[10][10],b[10]; void dfs(in转载 2017-02-05 18:58:17 · 413 阅读 · 0 评论 -
数位dp的简单使用
题目:给出不多1000位的数,每一位由0、1、2、3组成。 条件:所有的0都在1之前,所有的2都在3之前,0不能在首位,另外0、1、2、3必须出现至少一次。由于数较大所以结果对1000000007取余。 问题:求满足条件的数的数量。 分析:明显这类题目是无法通过暴力遍历解决的。所以需要通过数位dp解决。 #include #include #include using namespace原创 2016-12-18 21:31:21 · 363 阅读 · 0 评论 -
求最近点对(分治算法的运用)
原题:http://acm.hdu.edu.cn/showproblem.php?pid=1007 条件: 多组测试数据,n个点(2 解题思路: 以x坐标和y坐标分别进行归并排序,当x值相等时,以y值小的在前,当y值相等也是相似。 解题代码: #include #include #include #define MAX 2147483647 using原创 2017-04-27 15:21:15 · 308 阅读 · 0 评论
分享