摘要: ///这题不是很理解有待于重做,BFS+模拟,模拟有点麻烦 #include<stdio.h> #include<string.h> #include<queue> using namespace std; queue<int> q; int w,h; char map[45][45]; int dl[4][2]={{0,-1},{-1,0},{0,1},{1,0}}; int vis[45][45]; int dire,k;///指向当前移动方向。 int left(int a,int b,int c,int d) { if(a==c& 阅读全文
posted @ 2010-12-11 21:44 yangleo 阅读(160) 评论(0) 推荐(0) 编辑
摘要: 数塔问题的变形,每一层代表一秒,但要注意下一秒到这一秒,除了左右外还有自己本身这个位置,不能忽略即dp[i][j]=max{dp[i+1][j-1],dp[i+1][j],dp[i+1][j+1]}#include <iostream>using namespace std;int dp[100002][12];int max(int a,int b){ return a>b?a:b;}int main(){ int n,i,j,maxt; int x,t; while(scanf("%d",&n),n!=0) { maxt = 0; memset 阅读全文
posted @ 2010-12-11 21:18 yangleo 阅读(170) 评论(0) 推荐(0) 编辑
摘要: HDU 1159 最长公共子序列问题详见杭电刘春英老师PPT//DP算法://用f[i][j] 表示字符串a的第i个字母与字符串b的第j个字母比较,得到两串相比时第i和第j个字母之前相同字母的个数// 如果a[i-1]==b[j-1], f(i,j)= f(i-1,j-1)+1;否则,f(i,j)=max(f(i,j-1),f(i-1,j));#include<iostream>#include<string>using namespace std;int main(){ int f[500][500]; char a[500],b[500]; int i,j,lena 阅读全文
posted @ 2010-12-11 20:46 yangleo 阅读(291) 评论(0) 推荐(0) 编辑