随笔分类 -  数据结构与算法

有关acm,数据结构,算法。
摘要:1,提取刷新时间 #region 根据刷新时间判断是否发布或者刷新成功 //匹配源: <p>刷新时间:2012-11-22 16:30</p> //需要获取: 2012-11-22 16:30 private bool TestRefreshTime(string input) { bool flag = false; //正则 \d+至少一个数字,\-转义连接符,\s空格,()分组 Regex regex = new Regex(@"刷新时间:... 阅读全文
posted @ 2012-11-23 10:49 金河 阅读(487) 评论(0) 推荐(0) 编辑
摘要:昨天晚上看《大话设计模式》重构部分,今天在写一个私有方法时,感觉一直在粘贴复制,很无聊,后来我就想办法重构,重构了3次,终于得到了想要的代码,很简洁。(1)最初时公司有关58同城的代码是下面这样的:最初代码 1 #region 填写房屋设施 2 /// <summary> 3 /// 填写房屋设施 4 /// </summary> 5 /// <param name="httpclient"></param> 6 /// <param name="qunfainfo"></param> 阅读全文
posted @ 2012-11-22 14:37 金河 阅读(368) 评论(0) 推荐(0) 编辑
摘要:表1.常用的元字符.匹配除换行符以外的任意字符\w匹配字母或数字或下划线或汉字\s匹配任意的空白符\d匹配数字\b匹配单词的开始或结束^匹配字符串的开始$匹配字符串的结束表2.常用的限定符代码/语法说明*重复零次或更多次+重复一次或更多次?重复零次或一次{n}重复n次{n,}重复n次或更多次{n,m}重复n到m次3 正则表达式里的分枝条件指的是有几种规则,如果满足其中任意一种规则都应该当成匹配,具体方法是用|把不同的规则分隔开。0\d{2}-\d{8}|0\d{3}-\d{7}这个表达式能匹配两种以连字号分隔的电话号码:一种是三位区号,8位本地号(如010-12345678),一种是4位区号, 阅读全文
posted @ 2012-11-15 16:33 金河 阅读(235) 评论(0) 推荐(0) 编辑
摘要:题目:今天是阴历七月初五,acm队员zb的生日。zb正在和C小加、never在武汉集训。他想给这两位兄弟买点什么庆祝生日,经过调查,zb发现C小加和 never都很喜欢吃西瓜,而且一吃就是一堆的那种,zb立刻下定决心买了一堆西瓜。当他准备把西瓜送给C小加和never的时候,遇到了一个难 题,never和C小加不在一块住,只能把西瓜分成两堆给他们,为了对每个人都公平,他想让两堆的重量之差最小。每个西瓜的重量已知,你能帮帮他么?输入:多组测试数据(<=1500)。数据以EOF结尾第一行输入西瓜数量N (1 ≤ N ≤ 20)第二行有N个数,W1, …, Wn (1 ≤ Wi ≤ 10000) 阅读全文
posted @ 2012-05-03 16:26 金河 阅读(7134) 评论(0) 推荐(1) 编辑
摘要:广度搜索在acm中应用十分广泛,英文简写是BFS(breadth first search)。下面先看一下例子:在一个4*4的矩形中,有一些位置设置有障碍,要求从(1,1)走到(4,4),求最短距离。分析:假设没有任何障碍,我们可以走的路线如下:起点为(1,1),假设这一步是第一步可以到达的位置;然后它可以向相邻的方向走一步,如向右或向下就到达2号位置,2号就代表从起点到这个位置要走两步;3又是2号走一步;4是3走一步;这样子就像从1号展开以水波,向四周扩散,我们只要把这些相邻的位置全部保存在队列中,就会遍历完相邻的区域。下面通过一个具体的例子讲一下如何编程实现:问题:南阳理工学院校园里有一. 阅读全文
posted @ 2012-05-02 15:21 金河 阅读(622) 评论(0) 推荐(0) 编辑
摘要:题目:描述小明今天很开心,家里购置的新房就要领钥匙了,新房里有一间他自己专用的很宽敞的房间。更让他高兴的是,妈妈昨天对他说:“你的 房间需要购买哪些物品,怎么布置,你说了算,只要不超过N 元钱就行”。今天一早小明就开始做预算,但是他想买的东西太多了,肯定会超过妈妈限定的N 元。于是,他把每件物品规定了一个重要度,分为5 等:用整数1~5 表示,第5 等最重要。他还从因特网上查到了每件物品的价格(都是整数元)。他希望在不超过N 元(可以等于N 元)的前提下,使每件物品的价格与重要度的乘积的总和最大。设第j 件物品的价格为v[j],重要度为w[j],共选中了k 件物品,编号依次为j1...jk,则 阅读全文
posted @ 2012-04-29 22:01 金河 阅读(1052) 评论(0) 推荐(0) 编辑
摘要:在c++中,vector是一个十分有用的容器,下面对这个容器做一下总结。1 基本操作(1)头文件#include<vector>.(2)创建vector对象,vector<int> vec;(3)尾部插入数字:vec.push_back(a);(4)使用下标访问元素,cout<<vec[0]<<endl;记住下标是从0开始的。(5)使用迭代器访问元素.vector<int>::iterator it;for(it=vec.begin();it!=vec.end();it++) cout<<*it<<endl;( 阅读全文
posted @ 2012-04-27 20:30 金河 阅读(584514) 评论(17) 推荐(70) 编辑
摘要:做ACM时,经常用到string和int的转换,下面的程序:#include<iostream>#include<string>#include<sstream>using namespace std;int main(){ /////////////////////////// string 转为 int string str="1234"; int n; istringstream iss;//istringstream从string读入,和cin一样仅仅重载了>>,可以把string转为int iss.clear();/ 阅读全文
posted @ 2012-04-17 21:55 金河 阅读(10039) 评论(2) 推荐(3) 编辑
摘要:描述Dr.Kong设计的机器人卡多掌握了加减法运算以后,最近又学会了一些简单的函数求值,比如,它知道函数min(20,23)的值是20,add(10,98)的值是108等等。经过训练,Dr.Kong设计的机器人卡多甚至会计算一种嵌套的更复杂的表达式。假设表达式可以简单定义为:1.一个正的十进制数x是一个表达式。2.如果x和y是表达式,则函数min(x,y)也是表达式,其值为x,y中的最小数。3.如果x和y是表达式,则函数max(x,y)也是表达式,其值为x,y中的最大数。4.如果x和y是表达式,则函数add(x,y)也是表达式,其值为x,y之和。例如,表达式max(add(1,2),7)的值为 阅读全文
posted @ 2012-04-13 17:07 金河 阅读(456) 评论(0) 推荐(0) 编辑