上一页 1 ··· 27 28 29 30 31 32 33 34 35 ··· 39 下一页
  2013年10月12日
摘要: http://poj.org/problem?id=1260题意 :这个题大概是讲,给你几种等级不同的珠宝,然后告诉你它的数量和价值,等级是升序排列的,且随等级的升高价值也随之升高,但为了防止有的客户只购买一个珍珠,所以无论买哪一种的珍珠必须额外付这个等级珍珠的10倍的价钱,要求买够它给定的珍珠的种数中每一种珍珠的数量的总和,要求花费最小,等级低的可以用等级高的代替掉。思路 : 典型的动态规划,就是求一个最优解嘛,这个题倒不什么难,就是思路对很重要,看了大神的解题报告,0MS,挺好的 。样例解释 : 样例中最开始的2代表的是测试样例的组数,然后是珍珠的种数,等级按升序排列,然后第一组样例中按照 阅读全文
posted @ 2013-10-12 21:40 枫、 阅读(465) 评论(0) 推荐(0) 编辑
摘要: http://poj.org/problem?id=3267题意 : 给你一个message,是给定字符串,然后再给你字典,让你将message与字典中的单词进行匹配,输出要删掉多少字母。思路 : 动态规划问题,不仅要找对公式,还要注意一些细节问题样例解释 : 6是字典里有6个单词,10是给定的字符串的长度,给定的字符串可以与下面的brown和cow匹配,但要删掉两个字母6 10browndcodwcowmilkwhiteblackbrownfarmer#include#include#include#includeusing namespace std ;int main(){ int... 阅读全文
posted @ 2013-10-12 17:55 枫、 阅读(136) 评论(0) 推荐(0) 编辑
摘要: http://poj.org/problem?id=1276题意 : 给你一个目标钱数,再给你钱币的种数和钱币的面值,让你用这些钱凑出不大于目标钱数的钱然后输出这个最接近且不大于目标钱数的钱。思路 : 背包问题,还是多重背包,就是找到公式然后注意一下数组大小,还要小小的注意一下,因为那个钱数的范围挺大的,做一个小小的优化吧也算是 。代码 :#include#include#includeusing namespace std ;struct node{ int n; int d ;} cas[21] ;int main(){ int cash ; int n,ch[11... 阅读全文
posted @ 2013-10-12 15:12 枫、 阅读(155) 评论(0) 推荐(0) 编辑
  2013年10月11日
摘要: http://poj.org/problem?id=3176题意:就是一个数塔的问题,属于最简单的动态规划题了吧,数塔从上到下只能找它下面的和它下面的右边的那一个想加,加到最后一行,看加哪个数可以保证最后结果相同。这个题其实是非常非常简单的动态规划问题,只是因为以前做过,就没再上心,结果就悲剧的WA了,后来才发现其实是掉了一个等号,而恰好以前也这样做过,因为OJ数据弱,掉了等号就过了。思路 : 我的思路是从下往上加,这样的话慢慢的找最大值会比较容易,每次比较即可#include#include#includeusing namespace std;#define max 1000int s[m 阅读全文
posted @ 2013-10-11 21:41 枫、 阅读(260) 评论(0) 推荐(0) 编辑
  2013年8月30日
摘要: http://poj.org/problem?id=3414题意 : 大意是说给你两个杯子的体积和一个目标体积,a,b,c,通过对a,b进行6种操作,调出c体积的水,6种操作分别是把a倒满,把b倒满,把a弄成空的,把b弄成空的,把a里边的倒到b里,把b里边的水倒到a里;思路 : 算不上说多难,反正就是六种操作#include#include#includeconst int maxn = 1001000 ;using namespace std;int a,b,c;int r,l;int vis[110][110];struct node{ int cup1,cup2,step;//两个... 阅读全文
posted @ 2013-08-30 11:52 枫、 阅读(198) 评论(0) 推荐(0) 编辑
  2013年8月28日
摘要: http://poj.org/problem?id=1416题意 : 要为碎纸机公司开发一种新的碎纸机,这种碎纸机要具有3个特性 :一是粉碎机以一个目标数 t 作为输入,并且粉碎的纸上写有一个数字n,二是碎纸机将纸粉碎成碎片的时候每张碎片上都要有这个数字的一位或者数位,三是每张碎片上数字的总和尽可能地接近目标数 t ,但不可以超过 t ,可以等于 t 。如果目标数与纸张上的数字相同,则不要粉碎,如果任何组合的总和不可能小于或者等于目标数 t ,就输出error,例如,如果目标数 t = 1,但是纸上的数是123的话,就算最小的组合也是6,所以不满足要求。还有若是有多个符合要求的,也就是说有多个 阅读全文
posted @ 2013-08-28 23:18 枫、 阅读(249) 评论(0) 推荐(0) 编辑
摘要: http://poj.org/problem?id=2676题意 : 这个是我最喜欢玩的数独了,就是一个9乘9的宫格,填上1到9九个数字,每行每列每个宫格之内不能有重复的数字,给出的九宫格中,0是待填的数字,其他数字是已经填好的,若是无法按要求填出来,就输出原来的九宫格;思路 : DFS,深搜递归一下,设三个标记数组,标记一下每行的,每列的,每个宫格的,如果这个数字出现了,就标记了就行,我代码里写的是标记数组row[ i ][ j ],代表的是第 i 行的 j 已经出现了,col[ i ][ j ]代表的是第 i 行的 j 数组存在,map[ i ][ j ]宫格 i 的 j 这个数字存在,而 阅读全文
posted @ 2013-08-28 16:03 枫、 阅读(211) 评论(0) 推荐(0) 编辑
  2013年8月27日
摘要: http://poj.org/problem?id=3009题意 : 迷宫升级版,也是m*n的迷宫,0是可以走的,1是阻塞,2是初始点,3是目标位置,这个的阻塞是可以消除的,就是说只要石头撞到阻塞,阻塞就由1变为0了,石头这个时候是可以停下来的,也就是说石头只有撞上阻塞停下来才算走了一步,还有要注意的一点是石头停了下来的时候不是停在阻塞那个点那的,还是它撞阻塞之前的那个位置,求出走到目标位置需要的步数,若步数超过了10步就输出-1;思路 : 典型的DFS,递归就行,不过注意一下结束条件就行了#include#include#includeusing namespace std ;const i 阅读全文
posted @ 2013-08-27 20:29 枫、 阅读(200) 评论(0) 推荐(0) 编辑
摘要: http://poj.org/problem?id=2488题意 : 给你棋盘大小,判断马能否走完棋盘上所有格子,前提是不走已经走过的格子,然后输出时按照字典序排序的第一种路径思路 : 这个题吧,有点别扭,再加上要用字典序输出,所以就要用一点小技巧了,自己提前将能输出字典序的那个先写到数组里保存,也就是说,搜索方向要进行特殊的排列,而这样的话,只要每次找的时候从第0行第0列开始找,第一个成功走完所有的格子一定是按字典序排列的,因为只要能走完所有的格子,而字典序最小的就是左上角那个格子,所以,直接从那个开始遍历就行了,如果马是中间那个位置,那就按照那个顺序来遍历即可#include#includ 阅读全文
posted @ 2013-08-27 17:04 枫、 阅读(491) 评论(0) 推荐(0) 编辑
摘要: http://poj.org/problem?id=3087题意 : 我只能说,,英语不好是硬伤。。。这个题比较别扭啊,不知道真正题意是不是我所想的,我先把我A了的代码按照的题意的意思说一下,就是说两堆字符串每堆n个字符,从下边开始轮流取,其实输入之后就是从头开始取,先取第二个字符串的,放在最底下,再取第一个的,直到合成一个新的,然后再把下边n个取出来当成第一个字符串,上边n个当成第二个字符串,继续进行上述操作,直到新合成的字符串与题目中给出的目标字符串相同,若是合不成就输出-1,每次输出先输出是第几组数据,再输出需要几次可以达到目标字符串思路 : 模拟?还行吧,挺简单的,用map函数标记一下 阅读全文
posted @ 2013-08-27 10:19 枫、 阅读(387) 评论(0) 推荐(0) 编辑
上一页 1 ··· 27 28 29 30 31 32 33 34 35 ··· 39 下一页