![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
poj解题报告
文章平均质量分 61
iteye_18955
这个作者很懒,什么都没留下…
展开
-
poj2159解题报告
1.算法主要是理解题意,根据题目意思上下两行的字符能够进行一一配对,于是将上下两行的字符根据出现次数进行排序,然后进行一一的比较,如果匹配的话即可,答案为YES,否则为NO2.实现(1)读取字符串,采用c语言的读取方式,注意在之前要声明字符串的空间char str[100];(2)调用库函数进行排序, qsort((void*)a,26,sizeof(int),com);第一个参数...原创 2010-07-18 13:34:03 · 105 阅读 · 0 评论 -
poj3295解题报告
挺简单的一道题目,练练手。思路很简单,和计算器比较像,将表达式带入值通过栈进行运算,一个循环是32次,列举pqrst所有的值的情况,如果32种情况得到的值相同则为正确的。值得一提的是采用多个数组简化运算,de保存了运算符"KANCE"的运算规则,se保存了32种情况下"pqrst"的值情况,通过这两个数组使得运算简化[code="c++"]Problem: 3295 User: go...原创 2011-11-05 16:05:19 · 156 阅读 · 0 评论 -
poj1328解题报告
1.算法本题是一道贪心题,和《算法艺术与信息学竞赛》中的“照亮的山景”题极为相似。(1)首先我们求出在每个岛屿放雷达以后在x轴上所能覆盖的区间,是在x轴的上的一个线段,即在这一段上放置雷达可以覆盖到该岛。(2)我们把每个岛对应的线段找出来,只要在这些线段上放置一些雷达,使得所有的线段上都有雷达即可符合题意(注意如果半径为0或者坐标的y轴小于半径的话将无法完成覆盖,输出-1)。(3)...原创 2011-04-19 02:07:04 · 359 阅读 · 0 评论 -
poj2965解题报告
这道题目的思路和[url=http://godfrey90.iteye.com/blog/719363]poj1753[/url]的思路一样。有所不同的是这道题目中还需要输出搜索的路径,于是在unit中加了一个pre变量以记录搜索的路径,最后通过递归调用print_detail从前往后输出宽搜的结果。[code="c++"]Problem: 2965 User: godfrey90...原创 2011-04-16 17:43:59 · 98 阅读 · 0 评论 -
poj2411解题报告
又是一道状态压缩动态规划的题目,于之前一道有异曲同工之妙,成功AC。1.算法(1)首先这道题目和之前的那道炮兵阵地类似,可以以行作为划分进行动态规划,后一行根据前一行的状态来确定。(2)动态规划最重要的是找状态转移方程。就这道题来说,一共是n行,m列。我们可以这样考虑:我们一行一行的放1*2的牌,在第i行放完以后,必须保证该行所有的格子被填满了。这时记录下第i行向第i+1行凸出的地方。...原创 2010-07-28 21:05:14 · 318 阅读 · 0 评论 -
poj1185 解题报告
AC这道牛B的题目,开心。虽然WA了4次,RE了2次。1.算法经典的状态压缩动态规划题。让我慢慢道来:(1)首先,看到这个题目想到的是暴力搜索,无所谓深搜还是宽搜,都需要对所有的情况进行穷举,10*100的格子,这样穷举的话基本上会超时。想到用贪心法,但是贪心法的结果是不正确的。(2)于是想到动态规划,动态规划的重点是找状态转移方程,需要状态记录的数组f(因为最终要求的是大炮个数,...原创 2010-07-28 01:43:19 · 133 阅读 · 0 评论 -
poj1753解题报告
1.算法核心是宽度优先搜索和位处理。要找出最快的步数,用宽搜。(1)宽度优先搜索数据结构:队列的单元unit包含x(用int的末16位记录16个位置的信息),rounds(记录第几轮达到当前的状态),i(记录该状态是通过翻动哪个棋子得来的,以避免返回先前的状态)。queue是一个队列,记录所有状态;p,q分别是队列的头尾指针。used记录已经存在的状态。(2)宽度优先搜索算法处理:...原创 2010-07-23 01:27:39 · 163 阅读 · 0 评论 -
poj3094解题报告
1.算法无,简单计算2.实现(1)注意c++库和c库的巧妙运用,本题要求一次读入一行。故用getline()比scanf()更好用,所以选择c++输入库。getline()用法getline(cin,str);(2)c++中string是一个类,长度为str.length(),需要引入的头文件是 c中是char[] 表示string,长度用strlen(str),需要引入的...原创 2010-07-21 19:30:44 · 125 阅读 · 0 评论 -
poj3006解题报告
1.算法很简单,就是读取3个数a,d,n,从a,a+d,a+2d等等中找素数,直到找到第n个2.实现运用判断素数的方法3.代码#include#includebool is_prime(int num);int main(){ int a,d,n; scanf("%d%d%d",&a,&d,&n); while(!((a==0)&&(d==0...原创 2010-07-21 18:48:01 · 71 阅读 · 0 评论 -
poj2255解题报告~
1.算法本题是给出一个树的先序和中序,输出它的后序。可以通过递归实现。举例说明先序:DBACEGF 中序:ABCDEFG(1)把整个7个字符作为一段,根据先序找出第一个根D,根据中序可以得出,D左边为ABC,右边为EFG。(2)对D两边递归进行(1)操作。(3)递归的终止条件是这一段中只有一个字符(即为叶结点)根据以上可以步骤可以生成一棵树,然后递归输出后序。ps:...原创 2010-07-21 16:34:03 · 119 阅读 · 0 评论 -
poj1503解题报告
1.算法题目比较简单,就是简单的高精度加法,一位一位的,加,进位,即可。2.实现result数组用来放结果,input用来放输入,没此将输入加到结果上。注意,最后去掉前面所有的03.代码#include#includeint main(){ int result[10000]={0}; int length=0; char input[100];...原创 2010-07-20 00:30:52 · 91 阅读 · 0 评论 -
poj2262解题报告
1.算法原打算用筛法进行打出素数表,但是这样会超时,于是选取直接判断素数的方法。(在范围比较大的时候,可能用不到那么多的素数,打素数表反而更费时间,直接判断素数的方法看似比较慢,但是省略了前面很大一段打素数表的时间)。接着便是简单的遍历,因为不会出现wrong的情况,故很快找到结果。2.实现(1)之前想用c++文件输入输出的时候,发现要加上using namespace std,因为C...原创 2010-07-19 19:44:01 · 113 阅读 · 0 评论 -
poj1083解题报告
1.算法对每组数据进行求解。首先读入一组数据,通过一个结构体数组记录这组数据,然后将这组数据进行排序,排序算法是根据结构体中的s,若s相同则按照t排序。对排序后的数据一遍一遍的从左往右扫描,每扫描一遍可以完成多次不冲突的搬运,每次扫描的时间为10,一直扫描下去,直到所有的搬运完成,便可算出一共要的时间。注意:题目中没有说对应的s和t有st要调换位置。2.实现(1)同样用到了标准库q...原创 2010-07-18 21:14:46 · 131 阅读 · 0 评论 -
poj2739解题报告
1.算法通过筛法找出10000以内所有的素数,存到数组里。然后对每个输入的数num,尝试用连续的比num小的素数,用num减去这个这些连续的素数,如果结果是零,则在结果上加上1,最后输出结果。2.实现(1)对于数组初始化的时候,int a[10]={1}只能对数组的第一个字符进行初始化,但是int a[10]={0}可将整个数组进行初始化。关于c++中数组初始化,具体参见http://...原创 2010-07-18 17:19:27 · 78 阅读 · 0 评论 -
poj1837解题报告
这是一个很典型的动态规划中的01背包问题,G个砝码,每个砝码有C种放法。我们就可以按砝码的个数划分状态,共有G种状态,每种状态有多个选择,每次加一个砝码为一次状态转移,状态转移方程为:[code="c++"] for(i=1;i...2012-09-25 19:18:51 · 141 阅读 · 0 评论