2013年3月23日

最长公共子序列(求出长度并且输出子序列)

摘要: 动态规划思想:把一个大的问题分解成若干个子问题,求出子问题后,然后回溯求出大的问题。分析:给定两个字符串,假设为“a0,a1,a2....an”和"b0,b1,b2...bm",要求出两个字符串的最长公共子序列,我们先把大问题分成小问题,举个例子吧!假设“c0,c1,c2...ck”为它们的最长公共子序列。第一种:an=bm,则“c0,c1,c2...c(k-1)”为“a0,a1,a2...a(n-1)”和"b0,b1,b2...b(m-1)"的最长公共子序列;第二种:an!=bm并且an!=ck则“c0,c1,c2...ck”为"a0,a1, 阅读全文

posted @ 2013-03-23 15:58 后端bug开发工程师 阅读(1961) 评论(0) 推荐(1) 编辑

2013年3月17日

TCL之容器

摘要: [A] A Breaking Computer时间限制: 1000 ms 内存限制: 65535 K问题描述Oh my god.My computer is break.When I writing something,the home and the end always is working.But I also write too quakily,even I don't see the screen.OK,when I finish a work ,can you tell me the work become in end?We modified the sample out 阅读全文

posted @ 2013-03-17 14:45 后端bug开发工程师 阅读(278) 评论(0) 推荐(0) 编辑

hdu 1559(简单的dp)最大子矩阵

摘要: 题意:就是给你一个mXn的矩阵,然后让你在其中找一个和最大的xXy的矩阵。。。思路:我觉得dp就是递推,根据前面的推出后面的,每个矩阵的和我有右下角的点记录:dp[i][j]....代码实现:#include<stdio.h>#include<string.h>int a[1001][1001],dp[1001][1001]={0};int T,m,n,x,y,i,j,max;int nima1(int i){ int sum=0,j; for(j=1;j<=y;j++) sum=sum+a[i][j]-a[i-x][j]; return sum;}int n.. 阅读全文

posted @ 2013-03-17 10:58 后端bug开发工程师 阅读(326) 评论(0) 推荐(0) 编辑

2013年3月9日

hdu 1251(字典树)

摘要: 题意:容易理解。。。思路:很简单的字典树,容易求解,但是也有坑爹的地方。代码实现:#include#include#includeusing namespace std;struct node{ struct node *next[26]; int num; node() {... 阅读全文

posted @ 2013-03-09 16:51 后端bug开发工程师 阅读(211) 评论(0) 推荐(0) 编辑

hdu 1556(树状数组)

摘要: 题意:易知。。。思路:要求对树状数组的理解。代码实现:#include<iostream>#include<cmath>using namespace std;int n,a[100001];int lowbit(int x){ return x&(-x);}void build(int x,int y)//建树{ while(x<=n) { a[x]+=y; x+=lowbit(x); }}int sum(int x)//求和{ int s=0; while(x>0) { s=s+a[x]; x... 阅读全文

posted @ 2013-03-09 15:34 后端bug开发工程师 阅读(738) 评论(0) 推荐(0) 编辑

hdu 1114(完全背包)

摘要: 题意:首先输入T,代表T组测试数据,然后输入E,F,然后就是转化为用F-E的容量去装满价值为P容量为W,总的价值最小。分析:典型的完全背包,但要注意的是必须装满的。代码实现:#include<stdio.h>#include<string.h>int main(){ int n,m,a,b,i,j,k,v[1000],w[1000],c[10001],t; while(scanf("%d",&n)!=EOF) { for(i=0;i<n;i++) { memset(c,-1,sizeof(c));//用来判断是否装满 c[0]=0; . 阅读全文

posted @ 2013-03-09 15:11 后端bug开发工程师 阅读(224) 评论(0) 推荐(0) 编辑

2013年3月7日

hdu 2612(bfs)Find a way

摘要: 题意:就是Y和M在@相遇的最短的时间。思路:基本的广搜题,先Y搜一次,然后M搜一次,最后求出Y和M在@相遇的最短的时间。代码实现:#include<iostream>#include<queue>#include<cstring>using namespace std;int n,m,count1[210][210],count2[210][210],visited[210][210];//count1记录的是Y到各个点的最短的时间int b[4][2]={{1,0},{-1,0},{0,1},{0,-1}};//count2记录的是M到各个点最短的时间ch 阅读全文

posted @ 2013-03-07 12:55 后端bug开发工程师 阅读(1450) 评论(0) 推荐(0) 编辑

2013年3月6日

hdu 2518(dfs)Another Eight Puzzle

摘要: 思路:dfs的思想,比较简单的搜索题。代码实现:#include<iostream>#include<cstring>using namespace std;int a[10],b[10],flag,visited[10];int yanzheng(int i){ if(i==1)//和A相连的字母,下同 { if((a[2]!=0&&abs(a[i]-a[2])==1)||(a[3]!=0&&abs(a[i]-a[3])==1)||(a[4]!=0&&abs(a[i]-a[4])==1)) return -1; retu 阅读全文

posted @ 2013-03-06 22:16 后端bug开发工程师 阅读(490) 评论(0) 推荐(0) 编辑

hdu 1181(dfs)变形课

摘要: #include<stdio.h>#include<string.h>int visited[1000],n,flag;char a[1000][3];void dfs(char str){ int i; char temp; if(str=='m') { flag=1; return ; } for(i=1;i<=n;i++) { if(flag==1) break; if(visited[i]==0&&a[i][1]==str) { t... 阅读全文

posted @ 2013-03-06 22:01 后端bug开发工程师 阅读(443) 评论(0) 推荐(0) 编辑

2013年3月4日

hdu 3275(线段树的延迟标记,我被坑了)

摘要: 题意:给你一个n(代表n个0或者1)和k(一次可以更新k个数),问把它们全部变成1至少需要多少步,如果无法实现则输出-1。思路:此题用到了贪心的思想,通过举例可以发现:从左边开始一碰到0就更新一次是最优解;然后接下来的是线段树的延迟标记,但是坑爹的是:我的数组开了100005*4一直是Runtime Error,后来改了100005*6之后才AC了,中间花费了我好多时间去查错,气死我了!!!代码实现:#include<iostream>#include<cstring>using namespace std;struct node{ int num; int flag; 阅读全文

posted @ 2013-03-04 16:55 后端bug开发工程师 阅读(642) 评论(0) 推荐(0) 编辑

导航