数据结构与算法
文章平均质量分 73
stackoverlow
这个作者很懒,什么都没留下…
展开
-
uva 565 Pizza Anyone?
/*A-P共16种要求,每种要求选择或不选择,所以可以枚举16位二进制表示所有的可能然后对每种可能检测是否符合每个人的要求,定义一个结构体,存储每一个要求需要和不需要的披萨种类*/#include #include #include #define MAX_SIZE 10000typedef struct _case{ int want; int dont;}req原创 2013-05-27 18:47:28 · 733 阅读 · 0 评论 -
埃及分数问题
迭代深搜(iddfs)#include using namespace std;double n; //所求解int res[1000]; //存储分母int depth; //dfs深度即分数个数int a,b; //a/bint find; //求n个数最小公倍数,(除去所有的公约数,就成了最小公倍)int lcm(int val[],int n)原创 2013-07-06 20:35:03 · 844 阅读 · 0 评论 -
LA 3667 Ruler
bfs搜索,学习http://www.cnblogs.com/woaishizhan/archive/2012/12/19/2825398.html的代码后自己写了一遍#include #include #include #include #include #include using namespace std;#define MAX_SIZE 1000010//#d原创 2013-06-18 15:03:18 · 1393 阅读 · 0 评论 -
求二维矩阵最大子矩阵和
//暴力枚举的话需要On6的时间复杂度,用矩阵前缀和+最大子序列则可以将时间复杂度减少到On3,同时使用矩阵数组空间复杂度只要On2//输入一个矩阵,求和最大的子矩阵#include #include #include #define MAX_SIZE 100000int r,c;int martix[100][100];//输入矩阵,值可正可负void input()原创 2013-06-07 18:09:25 · 1273 阅读 · 0 评论 -
田忌赛马问题 贪心法
题目链接:http://acm.tju.edu.cn/toj/showp1188.html这是一道比较考验算法的题目,背景是我们非常熟悉的田忌赛马问题,但是在这里确是让我们给出一个解决一般性的田忌赛马问题,即随便给出n组田忌和齐威王的马的速度来求田忌能够胜出的最多盘数,当然,在这道题里面是指田忌这个大财主最多能拿到多少银币。这道题的算法说起来简单,但是也不好想,其实就三句话:一:如果田忌的转载 2013-06-16 22:22:21 · 2176 阅读 · 0 评论 -
uva 10905-Children’s Game
字符串比较#include #include #include #include #include using namespace std;bool cmp(const string& str1,const string& str2){ return (str1+str2)>(str2+str1);}int N,num;vector str;char s[100];原创 2013-06-05 22:12:11 · 701 阅读 · 0 评论 -
LA4725 Airport
最大值最小化问题,用二分法去探测结果#include #include using namespace std;#define MAX_SIZE 5050int N,MAX;int air[MAX_SIZE][2];int air2[MAX_SIZE][2]; //存储计算结果的临时数组void input(){ int i,j; memset(air, 0, s原创 2013-06-14 17:55:57 · 1153 阅读 · 0 评论 -
uva 10085-The most distant state
//死的暴力搜索,解答树最深层即解答,所以直接搜索到最深处,最后一个节点即答案,当然效率也不好,想不到啥好方法,实现上和上面的隐式图搜索是差不多的#include #include //using namespace std;#define MAX_SIZE 1000000#define MAX_STATE 362880#define L 0#define R 1#define原创 2013-06-04 21:53:47 · 733 阅读 · 0 评论 -
uva 321 - The New Villa
隐式图搜索,需将所有房间亮着的灯和当前位置的整体的状态抽象为图中的一个节点,进行搜索#include #include #include using namespace std;#define MAX_SIZE 10000#define MOV 1#define ON 2#define OFF 3typedef struct _node{ int room; int原创 2013-06-03 22:36:21 · 742 阅读 · 0 评论 -
10564 - Paths through the Hourglass
提交结果RE,可能空间不够或有点小bug,不过思路没错,样例结果正确,懒得调了用的dp, 设d[i][j][s]表示到第i行第j列(从1开始)和为s的路径个数,有d[i][j][s] = d[i-1][j][s-data[i][j]]+d[i-1][j-1 or j+1][s-data[i][j]];#include #include #include int d[24原创 2013-06-12 17:49:15 · 729 阅读 · 0 评论 -
最优程序问题
刘汝佳白书7-1最优程序问题大致实现#include using namespace std;#define ADD 0#define SUB 1#define MUL 2#define DIV 3#define DUP 4#define MAX_SIZE 100struct Node { int value; //存储code所有指令执行后栈顶的值 ch原创 2013-05-28 21:37:45 · 867 阅读 · 0 评论 -
uva387 A Puzzling Problem
不知道为什么提交就是Presentation error,output函数改来改去提交N遍最后居然AC了,但是都不记得是哪份代码AC了。。总之算法是正确的。。#include #include #include #define MAX_SIZE 100typedef struct _node{ int width; int high;}NODE;NODE desc[16原创 2013-05-27 21:27:54 · 777 阅读 · 0 评论 -
拉丁方块填数字
“数独”是当下炙手可热的智力游戏。一般认为它的起源是“拉丁方块”,是大数学家欧拉于1783年发明的。 如图[1.jpg]所示:6x6的小格被分为6个部分(图中用不同的颜色区分),每个部分含有6个小格(以下也称为分组)。 开始的时候,某些小格中已经填写了字母(ABCDEF之一)。需要在所有剩下的小格中补填字母。 全部填好后,必须满足如下约束:原创 2013-07-06 20:41:23 · 2077 阅读 · 0 评论