IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 游戏开发 -> 落谷P1189 `SEARCH` -> 正文阅读

[游戏开发]落谷P1189 `SEARCH`

落谷P1189 `SEARCH`

`SEARCH` - 洛谷https://www.luogu.com.cn/problem/P1189本题使用递归算法,核心代码中for里面两个if判断进入下一层递归的条件,如果撞墙或出格,都会终止for循环。否则进入下一层递归.

int n,m;
        int board[31][31];
        int xs,ys;
        int x[4]={-1,1,0,0};//
        int y[4]={0,0,1,-1};
        bool pass[51][51];//是否能通过
        char s[51][51];//地图
        int way[1001];//接收移动方向
        int nn;
        void search(int heng,int zong,int step){//"heng""zong"为坐标,step为步数
            if(step==nn){
                s[heng][zong]='*';//到终点,改变符号
                return;
            }
            int heng1=heng,zong1=zong;
            for(int i=0;i<51;i++){
                heng1+=x[way[step]];//"移动"到下一格
                zong1+=y[way[step]];
                if(heng1<0||heng1>=n||zong1>=m||zong1<0){//判断是否会超出地图
                    break;
                }
                if(pass[heng1][zong1]==0){//判断是否会进入禁行区
                    break;
                }
                search(heng1, zong1, step+1);//进入下一层递归
            }
            
        }
        int main(){
            cin>>n>>m;
            for(int i=0;i<n;i++){//输入pass
                for(int j=0;j<m;j++){
                    cin>>s[i][j];
                    if(s[i][j]=='.'){
                        pass[i][j]=1;
                    }else if(s[i][j]=='X'){
                        pass[i][j]=0;
                    }else{
                        pass[i][j]=1;
                        xs=i;
                        ys=j;
                    }
                }
            }
            cin>>nn;
            for(int i=0;i<nn;i++){//设置way
                string str;
                cin>>str;
                if(str=="NORTH"){
                    way[i]=0;
                }else if(str=="SOUTH"){
                    way[i]=1;
                }else if(str=="EAST"){
                    way[i]=2;
                }else{
                    way[i]=3;
                }
            }
            search(xs,ys,0);
            s[xs][ys]='.';
            for(int i=0;i<n;i++){//输出
                for(int j=0;j<m;j++){
                    cout<<s[i][j];
                }
                cout<<endl;
            }

            return 0;
        }
  游戏开发 最新文章
6、英飞凌-AURIX-TC3XX: PWM实验之使用 GT
泛型自动装箱
CubeMax添加Rtthread操作系统 组件STM32F10
python多线程编程:如何优雅地关闭线程
数据类型隐式转换导致的阻塞
WebAPi实现多文件上传,并附带参数
from origin ‘null‘ has been blocked by
UE4 蓝图调用C++函数(附带项目工程)
Unity学习笔记(一)结构体的简单理解与应用
【Memory As a Programming Concept in C a
上一篇文章      下一篇文章      查看所有文章
加:2022-04-06 16:21:40  更:2022-04-06 16:25:12 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2025年1日历 -2025/1/16 20:55:53-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码