摘要: 终于还是AC了,可是WA了N多次了呀,唉,忽略了一个要点,就是在广搜的时候,一个点可以不止被通过一次,好郁闷呀,确实如此,看了大牛给的测试例子,通过了这个例子,接着就AC了得再开一个数组记录到达该点的方向主体是用BFS枚举所有可推点的状态,用DFS判断推箱工能否到达箱子的后面看下这个测试例子5 30 0 00 0 00 2 01 4 11 3 1答案是 4#include<iostream>#include<queue>using namespace std;int map[8][8],n,m,ei,ej,a,b,dir[4][2]={{1,0},{-1,0},{0,1 阅读全文
posted @ 2011-08-10 18:44 枕边梦 阅读(187) 评论(0) 推荐(0) 编辑
摘要: 额,简单的DFS#include<iostream>#include<queue>using namespace std;int map[26][26];bool vis[26][26];struct node{ int x; node(int _x=0):x(_x){};};bool bfs(){ queue<node> Q; Q.push(node(1)); while(!Q.empty()) { node t=Q.front(); Q.pop(); for(int i=0;i<26;i++) { if(map[t.x][i]&&i 阅读全文
posted @ 2011-08-10 13:51 枕边梦 阅读(207) 评论(0) 推荐(0) 编辑
摘要: 一个早上了,整整一个早上了,我的天啊,错误是大把大把的可是思路明明很简单,这题是用BFS做的,可是不能紧紧标记一个点是否已经访问过,这样直接WA,因为访问过的不符合条件的点,很可能是因为转了太多的弯,但完全有可能存在转的弯比较少的路径在之后访问该点,所以vis[][]数组是用来保存访问过该点的最少的转弯次数,这样,只要访问该点,该点的转弯次数小于之前访问该店的最小转弯次数,则可以入队我很不明白,我之前有些为什么还会MLE……#include <iostream>#define MAXN 1001#include <queue>using namespace std;in 阅读全文
posted @ 2011-08-10 12:48 枕边梦 阅读(251) 评论(1) 推荐(0) 编辑
摘要: 郁闷死啦,一道简单的DP,搞了好几个小时,结果输出错了,反序了,都怪测试例子是三个数,反序了也不知道呀,也怪自己……………………#include<iostream>#include<string>using namespace std;int p[105],f[105],dp[105],ans[105];bool map[105][105];int main(){ int a,b,n,m,cas,t=0; cin>>cas; while(cas--) { cin>>n; for(int i=1;i<=n;i++) cin>>p[ 阅读全文
posted @ 2011-08-10 00:08 枕边梦 阅读(307) 评论(0) 推荐(0) 编辑