摘要: 题目大意:给出一个矩阵,每个格子有不同的消耗,给出起点和终点,求从起点走到终点要求消耗最小的路径。例如:思路:其实就是求矩阵的最短路径。也就是dijkstra算法,实现方法有很多,可以用一个矩阵记录每个点到起点的消耗(初始化为无穷大),搜索,若有更小的则更新;再一种是直接用优先队列来求,这保证了每一步都是最优的,时间复杂度和空间复杂度都比上一种方法更优,下面代码便是用这种方法。PS:关于最短路径算法dijkstra,最关键的理解我认为是从起点开始,直接相连的初始化为各自路径大小,其他的为无穷大,下一步就选最小的那个,同时更新其它的点到起点的路径大小。 1 #include <iostre 阅读全文
posted @ 2012-09-19 09:07 晨风世界 阅读(320) 评论(0) 推荐(0) 编辑
摘要: 因为矩阵很小,简单的深搜。。可是。。有一点不明白,当我的chage数组为change[]={-2,1,-1,2,1,2,2,1,2,-1,1,-2,-1,-2,-2,-1}的时候就会TLE,深搜的方向不同时间差别这么大吗?这个时间复杂度怎么分析? 诚心请教各位大牛为小弟指点迷津。。。 1 #include<iostream> 2 #include<memory.h> 3 using namespace std; 4 5 bool visited[5][6]; 6 int road[30]; 7 int change[]={-1,-2,-2,-1,-2,1,-1,2,1, 阅读全文
posted @ 2012-09-19 09:05 晨风世界 阅读(260) 评论(0) 推荐(0) 编辑
摘要: 数据量是8*8的了,要做个优化,尽量往分支少的方向搜马周游的问题,很经典的深搜。以后自己当做模版思路吧 1 #include<iostream> 2 #include<memory.h> 3 #include<vector> 4 #include<algorithm> 5 using namespace std; 6 7 int road[64]; 8 bool vis[8][8]; 9 int change[]={-2,1,-1,2,1,2,2,1,2,-1,1,-2,-1,-2,-2,-1};10 11 struct Node12 {13 i 阅读全文
posted @ 2012-09-19 09:05 晨风世界 阅读(194) 评论(0) 推荐(0) 编辑
摘要: 这道读懂题意就很简单了,就宽搜就OK了。。题意其实就是在一个8*8的国际象棋棋盘上下棋,骑士以马的形式跳(“日”字型,跟中国象棋一样,没拌点) 1 #include<iostream> 2 #include<string> 3 #include<queue> 4 #include<memory.h> 5 using namespace std; 6 7 struct node 8 { 9 int row; 10 int colum; 11 int m; 12 }; 13 int main() 14 { 15 int t; 16 cin>&g 阅读全文
posted @ 2012-09-19 09:04 晨风世界 阅读(176) 评论(0) 推荐(0) 编辑
摘要: sicily上面的三道“简单魔板”的变形,开始以为数据变大了第一道题的解法行不通了,其实不然。网上看到用康托展开来进行存储状态的,发现其实对于这道题没能发挥康托展开的强大威力。下面是找到别人的代码,自己加了一些注释(呜呜,我不想剽窃的。。。只是转载不了。。)原文出处http://blog.csdn.net/bingleaf/article/details/6248371关于康托展开,百度百科讲得非常详细了,看下就知道是什么东西了,算法实现也很简单,主要是其思想。。其实这道题没必要使用康托编码,这里没发挥它的强大作用。因为从开始状态往下一层一层的搜不会出现太多的状态(试了下1000000步也只是 阅读全文
posted @ 2012-09-19 09:03 晨风世界 阅读(236) 评论(0) 推荐(0) 编辑
摘要: 这道题用宽搜把从开始状态往下10层变化的所有结果都找出来存在一个map里面(测试了一下,一共只有10000种情况不会太大),然后再去查找目标的情况是否在map里面,如果不在则说明不行,如果在的话看其从开始的状态变到这里用的步数是否超过了规定的N宽搜的话用一个队列就可以实现了 1 #include<iostream> 2 #include<map> 3 #include<string> 4 #include<queue> 5 #include<stdio.h> 6 using namespace std; 7 8 string A(st 阅读全文
posted @ 2012-09-19 09:01 晨风世界 阅读(143) 评论(0) 推荐(0) 编辑
摘要: 解题关键在于用筛选法求得素数(详细可百度)所谓“筛选法”指的是“埃拉托色尼(Eratosthenes)筛法”。他是古希腊的著名数学家。他采取的方法是,在一张纸上写上1到100全部整数,然后逐个判断它们是否是素数,找出一个非素数,就把它挖掉,最后剩下的就是素数。具体做法如下:<1> 先将1挖掉(因为1不是素数)。<2> 用2去除它后面的各个数,把能被2整除的数挖掉,即把2的倍数挖掉。<3> 用3去除它后面的各数,把3的倍数挖掉。<4> 分别用4、5…各数作为除数去除这些数以后的各数。这个过程一直进行到在除数后面的数已全被挖掉为止。例如找1~50的素 阅读全文
posted @ 2012-09-19 09:01 晨风世界 阅读(274) 评论(0) 推荐(0) 编辑
摘要: 这道题关键在于模拟连除倒取余数法,如何确定每一步“合适”的商和余数(因为余数不能为负),以保证商*除数+余数=被除数。此外要注意的一点是,正数%负数---余数是为正的(余数正负同被除数的正负) 1 #include<iostream> 2 #include<memory.h> 3 #include<algorithm> 4 #include<cmath> 5 using namespace std; 6 int main() 7 { 8 int N; 9 while(cin>>N)10 {11 int r;12 cin>> 阅读全文
posted @ 2012-09-19 09:00 晨风世界 阅读(215) 评论(0) 推荐(0) 编辑
摘要: 转网上的sicily 1198 贪心,8个串排出最小字典序,8!枚举sicily 1029 递推 简单sicily 1028 梵塔问题 -> 分治,归纳 -> 有意思但要留意其数据规模较大sicily 1193 递推 较难sicily 1021 简单题 -> 规模原来很大 -> 难 ->数据结构: 栈sicily 1176 两人从两头取数例2.1 倒蛇阵填数sicily 1150 简单魔板sicily 1151 魔板B,要求写解题报告sicily 1515 魔板Csicily 1007 数组与下标(二维数组) 简单sicily 1036 数组与下标(二维数组) 简 阅读全文
posted @ 2012-09-19 08:59 晨风世界 阅读(295) 评论(0) 推荐(0) 编辑
摘要: 超水的一道题,这里就不做什么说明了。贴出代码留给自己以后思考。。 1 #include<iostream> 2 using namespace std; 3 int main() 4 { 5 for(int i=2992;i<=9999;i++) 6 { 7 int sum=0; 8 int x=i; 9 while(x!=0)10 {11 sum=sum+x;12 x=x/10;13 }14 int sum1=0;15 ... 阅读全文
posted @ 2012-09-19 08:58 晨风世界 阅读(132) 评论(0) 推荐(0) 编辑
摘要: 这道题我这个菜鸟还是想了很久,也看过各位神牛的代码。有很多方法,没有去比较过它们的效率问题,只是选择了自己决定容易理解的方法来做。需要声明的是,下面的代码不是本人所写,是“剽窃”大牛Dy.T的博客http://tuodeyi.blog.163.com/blog/static/17651458020113802141292/自己只是加了一些注释思路如下:使用递归模拟平常取余的方法,首先求出的余数是最低位;关键在于对-2,-1,0,1,,2共5个余数的处理方法;若余数为2,由于题目规定编码只有-1,0,1,故须将正常求得的余数2进行转换,即相当于把2编码为1,同时给高位进一位即可。对于其他的余数也 阅读全文
posted @ 2012-09-19 08:56 晨风世界 阅读(209) 评论(0) 推荐(0) 编辑
摘要: 大二了,自己写code还是那么菜,以前做过的一些水题没有记录再次回过头来又忘得七七八八了,忽然觉得是时候好好地coding了,记录一些解题的思路帮助自己以后容易看懂。呵呵,这绝对绝对是水题,大牛别耻笑。。哪里写得不对的地方还请大家多多指教啊,小弟感谢不尽。多交流多学习,每天进步一点。这道题是数论里面的内容,涉及到高精度存储长整数(一般都是存在char数组里面,提取每一位时减去‘0’就行了)题目关键点:高精度存数,模拟竖式除法运算(即我们小学用的笔算),从高位开始处理,处理每一位时用前一位的余数乘以10加上当前位,取余。。动手一下就容易明白了View Code 1 #include<ios 阅读全文
posted @ 2012-09-19 08:55 晨风世界 阅读(298) 评论(0) 推荐(0) 编辑