【宽搜】BAPC2014 J Jury Jeopardy (Codeforces GYM 100526)

本文介绍了一种基于宽搜算法的迷宫还原方法,通过分析机器人在迷宫中按照特定指令集行走的路径,逆向生成原始迷宫地图。重点讨论了如何利用字符串中的方向指令更新机器人位置和方向,同时记录并输出迷宫边界。

题目链接:

  http://codeforces.com/gym/100526

  http://acm.hunnu.edu.cn/online/?action=problem&type=show&id=11673&courseid=0

题目大意:

  一个机器人一开始位于迷宫入口,面朝东,接下来按照右前左后的顺序遍历迷宫,如果有墙'#'就执行下一个方向

  直到找到一个是路'.'的方向并且往那个方向移动一格,并改为面朝该方向。

  现在给你机器人右前左后的字符数组,求原来的地图,数据保证没有不能遍历的点。最顶端,右端和下端都应该有一层墙壁'#'。

  数据保证最后机器人回到起点。地图大小不超过100x100

题目思路:

  【宽搜】

  选定起点(我选的是200,200)然后开始按照字符串中的方向字符走,并且把这个点覆盖成路'.'。接着改变朝向。

  做的过程中记录到达的边界大小,最后按边界输出地图即可。

 

  1 //
  2 //by coolxxx
  3 //#include<bits/stdc++.h>
  4 #include<iostream>
  5 #include<algorithm>
  6 #include<string>
  7 #include<iomanip>
  8 #include<map>
  9 #include<memory.h>
 10 #include<time.h>
 11 #include<stdio.h>
 12 #include<stdlib.h>
 13 #include<string.h>
 14 //#include<stdbool.h>
 15 #include<math.h>
 16 #define min(a,b) ((a)<(b)?(a):(b))
 17 #define max(a,b) ((a)>(b)?(a):(b))
 18 #define abs(a) ((a)>0?(a):(-(a)))
 19 #define lowbit(a) (a&(-a))
 20 #define sqr(a) ((a)*(a))
 21 #define swap(a,b) ((a)^=(b),(b)^=(a),(a)^=(b))
 22 #define mem(a,b) memset(a,b,sizeof(a))
 23 #define eps (1e-8)
 24 #define J 10
 25 #define mod 1000000007
 26 #define MAX 0x7f7f7f7f
 27 #define PI 3.14159265358979323
 28 #define N 504
 29 #define M 10000004
 30 using namespace std;
 31 typedef long long LL;
 32 int cas,cass;
 33 int n,m,lll,ans;
 34 int l,r,u,d;
 35 char s[M];
 36 int dx[]={0,-1,0,1};
 37 int dy[]={1,0,-1,0};
 38 int R[]={3,0,1,2},F[]={0,1,2,3},L[]={1,2,3,0},B[]={2,3,0,1};
 39 char mapp[N][N];
 40 void print()
 41 {
 42     int i,j;
 43     printf("%d %d\n",d-u+3,r-l+2);
 44     for(i=u-1;i<=d+1;i++)
 45     {
 46         for(j=l;j<=r+1;j++)
 47             printf("%c",mapp[i][j]);
 48         puts("");
 49     }
 50 }
 51 int main()
 52 {
 53     #ifndef ONLINE_JUDGE
 54 //    freopen("1.txt","r",stdin);
 55 //    freopen("2.txt","w",stdout);
 56     #endif
 57     int i,j,k;
 58     int x,y,way;
 59 //    for(scanf("%d",&cas);cas;cas--)
 60 //    for(scanf("%d",&cas),cass=1;cass<=cas;cass++)
 61 //    while(~scanf("%s",s+1))
 62 //    while(~scanf("%d",&n))
 63     scanf("%d",&cas);
 64     printf("%d\n",cas);
 65     while(cas--)
 66     {
 67         scanf("%s",s);
 68         for(i=0;i<N;i++)
 69             for(j=0;j<N;j++)
 70                 mapp[i][j]='#';
 71         n=strlen(s);
 72         r=l=u=d=200,x=200,y=200;way=0;
 73         mapp[x][y]='.';
 74         for(i=0;i<n;i++)
 75         {
 76             if(s[i]=='R')
 77             {
 78                 way=R[way];
 79                 x+=dx[way];
 80                 y+=dy[way];
 81                 mapp[x][y]='.';
 82             }
 83             else if(s[i]=='F')
 84             {
 85                 way=F[way];
 86                 x+=dx[way];
 87                 y+=dy[way];
 88                 mapp[x][y]='.';
 89             }
 90             else if(s[i]=='L')
 91             {
 92                 way=L[way];
 93                 x+=dx[way];
 94                 y+=dy[way];
 95                 mapp[x][y]='.';
 96             }
 97             else if(s[i]=='B')
 98             {
 99                 way=B[way];
100                 x+=dx[way];
101                 y+=dy[way];
102                 mapp[x][y]='.';
103             }
104             u=min(u,x);d=max(d,x);l=min(l,y);r=max(r,y);
105         }
106         print();
107     }
108     return 0;
109 }
110 /*
111 //
112 
113 //
114 */
View Code

 

转载于:https://www.cnblogs.com/Coolxxx/p/5805165.html

基于径向基函数神经网络RBFNN的自适应滑模控制学习(Matlab代码实现)内容概要:本文介绍了基于径向基函数神经网络(RBFNN)的自适应滑模控制方法,并提供了相应的Matlab代码实现。该方法结合了RBF神经网络的非线性逼近能力和滑模控制的强鲁棒性,用于解决复杂系统的控制问题,尤其适用于存在不确定性和外部干扰的动态系统。文中详细阐述了控制算法的设计思路、RBFNN的结构与权重更新机制、滑模面的构建以及自适应律的推导过程,并通过Matlab仿真验证了所提方法的有效性和稳定性。此外,文档还列举了大量相关的科研方向和技术应用,涵盖智能优化算法、机器学习、电力系统、路径规划等多个领域,展示了该技术的广泛应用前景。; 适合人群:具备一定自动控制理论基础和Matlab编程能力的研究生、科研人员及工程技术人员,特别是从事智能控制、非线性系统控制及相关领域的研究人员; 使用场景及目标:①学习和掌握RBF神经网络与滑模控制相结合的自适应控制策略设计方法;②应用于电机控制、机器人轨迹跟踪、电力电子系统等存在模型不确定性或外界扰动的实际控制系统中,提升控制精度与鲁棒性; 阅读建议:建议读者结合提供的Matlab代码进行仿真实践,深入理解算法实现细节,同时可参考文中提及的相关技术方向拓展研究思路,注重理论分析与仿真验证相结合。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值