当前位置: 首页 > news >正文

南山网站制作青州网站

南山网站制作,青州网站,网站建设培训心得体会,有关网站建设的图片题干#xff1a; Uva的题目就不粘贴题干了#xff0c;#xff0c;直接上题意吧。 有你一个独轮车#xff0c;车轮有5种颜色#xff0c;为了5中颜色的相对位置是确定的。有两种操作#xff1a;1.滚动#xff1a;轮子必须沿着顺时针方向滚动#xff0c;每滚动一次会到达…题干 Uva的题目就不粘贴题干了直接上题意吧。 有你一个独轮车车轮有5种颜色为了5中颜色的相对位置是确定的。有两种操作1.滚动轮子必须沿着顺时针方向滚动每滚动一次会到达另一个格子着地的颜色会改变顺时针转。例如当前是绿色着地下一次就是黑色依次是红蓝白。2.转动就是改变了轮子的方向不改变颜色转动每次只能选择左转90度或者右转90度即不能掉头。车子每向前走一格滚动耗时1秒拐弯转动耗时1秒。 开始时方向朝北轮子接触地面的颜色为绿色求出一条耗时最短的路线到达终点时使得车子接触地面的也为绿色方向无所谓。 解题报告 题意解释清楚了就是个简单的bfs了只是需要记录的东西比较多之前最多就是考虑个方向比如这题【HDU - 1254 】推箱子 双bfs现在再加个颜色的记录就是了。。vis[x][y][方向][颜色]。 AC代码 #includecstdio #includeiostream #includealgorithm #includequeue #includemap #includevector #includeset #includestring #includecmath #includecstring #define ll long long #define pb push_back #define pm make_pair #define fi first #define se second using namespace std; const int MAX 2e5 5;struct Node {int x,y;int dir,col,time;Node(){}Node(int x,int y,int dir,int col,int time):x(x),y(y),dir(dir),col(col),time(time){} } st,ed; int n,m; char maze[55][55]; int nx[4] {0,-1,0,1};//左上右下 int ny[4] {-1,0,1,0}; bool vis[55][55][5][5]; bool ok (int x,int y) {if(x 1 x n y 1 y m) return 1;return 0 ; } int bfs() {memset(vis,0,sizeof vis);vis[st.x][st.y][1][0] 1;queueNode q;q.push(st);int tx,ty,tc,td;while(!q.empty()) {Node cur q.front();q.pop();if(cur.x ed.x cur.y ed.y cur.col 0) return cur.time;tc (cur.col 1) % 5;tx cur.x nx[cur.dir];ty cur.y ny[cur.dir];if(ok(tx,ty) maze[tx][ty] ! # vis[tx][ty][cur.dir][tc] 0) {vis[tx][ty][cur.dir][tc] 1;q.push(Node(tx,ty,cur.dir,tc,cur.time1));}td (cur.dir 1) % 4;if(vis[cur.x][cur.y][td][cur.col] 0) {vis[cur.x][cur.y][td][cur.col] 1;q.push(Node(cur.x,cur.y,td,cur.col,cur.time1));} td (cur.dir - 1 4) % 4;if(vis[cur.x][cur.y][td][cur.col] 0) {vis[cur.x][cur.y][td][cur.col] 1;q.push(Node(cur.x,cur.y,td,cur.col,cur.time1));}}return -1; } int main() {int iCase 0;while(~scanf(%d %d,n,m)) {if(n 0 m 0) break;for(int i 1; in; i) {scanf(%s,maze[i]1);}for(int i 1; in; i) {for(int j 1; jm; j) {if(maze[i][j] S) st Node(i,j,1,0,0);if(maze[i][j] T) ed Node(i,j,0,0,0);}}if(iCase) puts();printf(Case #%d\n,iCase);int ans bfs();if(ans -1) puts(destination not reachable);else printf(minimum time %d sec\n,ans);}return 0 ;} 总结 代码的书写告诉我们这题只需要一个queue就可以了如果不这么写的话可能需要一个pq才可以、、比如你把转向和前进算在算在一步当中然后time2那就需要pq了、、
http://www.zqtcl.cn/news/380637/

相关文章:

  • 自己做网站的成本要哪些东西wordpress resize
  • 网站建设总体流程wordpress 浮窗音乐
  • 福州网站建设公司哪个网站可以做前端项目
  • 十二冶金建设集团有限公司网站wordpress安装在哪里
  • 怎么做网站源码wordpress的rss
  • wordpress能不能做企业网站软件技术和计算机网络技术哪个好
  • 甘肃省住房和城乡建设部网站首页ip怎么做网站
  • 怎么开一家网站开发公司百度推广一年大概需要多少钱
  • 小破站下载h5企业模板网站
  • 服务器怎么设置ip做网站凌云seo博客
  • 莱芜四大金刚是谁啊镇江网站优化推广
  • 上海门户网站开发企业号码查询系统
  • 西安做网站设计的公司golang 网站开发 教程
  • 做网站哪些公司专业做app软件开发公司
  • 蒙特网站建设湖北省建设厅网站上岗证查询
  • 宁波网站建设 联系哪家电子商务网站建设过程范文
  • 南宁商城网站建设网站建设的需求文档
  • dedeampz 部署wordpress 网站访问慢如何评价网站是否做的好处
  • 怎样建设个人影视网站设计学专业
  • 没有公司 接单做网站网站建设加盟合作
  • 如何将域名和网站绑定做网站找投资人
  • 网站开发 平台WordPress首页可见
  • 沧州做网站费用打开上海发布
  • 重庆潼南网站建设公司电话网站能调用一些字体
  • 摄影网站设计素材做彩票网站电话多少
  • 开网站公司企业管理网课
  • 相城高端网站建设施工建设集团网站
  • .电子商务网站的开发原则包括网络服务示范区创建情况
  • 网站如何做权重php做网站登陆验证
  • 昆山制造网站的地方网站建设 有聊天工具的吗