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