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

深圳公司开发网站网站服务器上的跳转选择怎么做

深圳公司开发网站,网站服务器上的跳转选择怎么做,wordpress登入账户,wordpress阿里云数据库题目链接 我们看到这道题,一下子就可以想到用模拟来做,但是!地图存不下去,这是一个严重的问题。 怎么办呢? 方法一: 我们可以用不同的数字来代替字符,再用short存。 CODE: #in…

题目链接

我们看到这道题,一下子就可以想到用模拟来做,但是!地图存不下去,这是一个严重的问题。

怎么办呢?

方法一:

我们可以用不同的数字来代替字符,再用short存。

CODE:

#include <iostream>
#include <vector>
#include <string>using namespace std;int main() {// 读取输入int n, m, x;cin >> n >> m >> x;// 读取网格vector<vector<short>> grid(n, vector<short>(m));int start_i = 0, start_j = 0; // 初始位置for (int i = 0; i < n; ++i) {string row;cin >> row;for (int j = 0; j < m; ++j) {if (row[j] == '#') {start_i = i;start_j = j;grid[i][j] = 0; // 起点视为空地} else if (row[j] == 'X') {grid[i][j] = 1; // 1 表示障碍物} else {grid[i][j] = 0; // 0 表示空地}}}// 读取移动方向vector<short> opts(x);for (int i = 0; i < x; ++i) {cin >> opts[i];}// 模拟游走int current_i = start_i, current_j = start_j; // 当前位置for (int i = 0; i < x; ++i) {int opt = opts[i];int next_i = current_i, next_j = current_j;// 计算下一步的坐标if (opt == 1) {next_i--; // 上} else if (opt == 2) {next_i++; // 下} else if (opt == 3) {next_j--; // 左} else if (opt == 4) {next_j++; // 右}// 检查是否越界或撞到障碍物if (next_i < 0 || next_i >= n || next_j < 0 || next_j >= m || grid[next_i][next_j] == 1) {cout << "ZCS is die!" << endl;return 0;}// 更新当前位置current_i = next_i;current_j = next_j;}// 输出最终坐标cout << current_i - start_i << " " << current_j - start_j << endl;return 0;
}

方法二:

我们把障碍用vector存下来。

CODE:

#include <iostream>
using namespace std;// 定义方向偏移量,分别对应上、下、左、右
const int dx[] = {-1, 1, 0, 0};
const int dy[] = {0, 0, -1, 1};int main() {short n, m, x;// 读取教室的长、宽和步数cin >> n >> m >> x;short startX, startY;char cell;// 读取地图并确定起点坐标for (short i = 0; i < n; ++i) {for (short j = 0; j < m; ++j) {cin >> cell;if (cell == '#') {startX = j;startY = i;}}}short currentX = startX;short currentY = startY;for (short i = 0; i < x; ++i) {short opt;cin >> opt;// 方向选项减 1 以匹配偏移量数组的索引opt--;short newX = currentX + dx[opt];short newY = currentY + dy[opt];// 动态检查新位置是否越界或者遇到障碍bool isInvalid = false;if (newX < 0 || newX >= m || newY < 0 || newY >= n) {isInvalid = true;} else {// 重新读取地图中对应位置的信息short pos = newY * m + newX;short currentRow = 0;cin.clear();cin.seekg(0, ios::beg);for (short k = 0; k < n; ++k) {for (short l = 0; l < m; ++l) {cin >> cell;if (k * m + l == pos) {if (cell == 'X') {isInvalid = true;}break;}}if (isInvalid) {break;}}}if (isInvalid) {cout << "ZCS is die!" << endl;return 0;}currentX = newX;currentY = newY;}// 如果没有撞到障碍,输出最终坐标cout << "(" << currentX - startX << ", " << currentY - startY << ")" << endl;return 0;
}    

注:有可能过不了。 

方法三:

我们可以把经历过的坐标记录下来,用hash去重,并且看是否与某个障碍物的坐标重合了。

CODE:

#include <iostream>
#include <vector>
#include <string>
#include <unordered_set>using namespace std;// 定义一个哈希函数用于存储坐标
struct CoordinateHash {size_t operator()(const pair<int, int>& p) const {return static_cast<size_t>(p.first) * 100000 + p.second;}
};int main() {// 读取输入int n, m, x;cin >> n >> m >> x;// 读取网格vector<string> grid(n);int start_i = 0, start_j = 0; // 初始位置for (int i = 0; i < n; ++i) {cin >> grid[i];for (int j = 0; j < m; ++j) {if (grid[i][j] == '#') {start_i = i;start_j = j;}}}// 读取移动方向vector<int> opts(x);for (int i = 0; i < x; ++i) {cin >> opts[i];}// 记录障碍物的坐标unordered_set<pair<int, int>, CoordinateHash> obstacles;for (int i = 0; i < n; ++i) {for (int j = 0; j < m; ++j) {if (grid[i][j] == 'X') {obstacles.insert({i - start_i, j - start_j});}}}// 模拟游走int current_i = 0, current_j = 0; // 当前位置(相对于起点)unordered_set<pair<int, int>, CoordinateHash> visited; // 记录走过的坐标visited.insert({current_i, current_j});for (int i = 0; i < x; ++i) {int opt = opts[i];int next_i = current_i, next_j = current_j;// 计算下一步的坐标if (opt == 1) {next_i--; // 上} else if (opt == 2) {next_i++; // 下} else if (opt == 3) {next_j--; // 左} else if (opt == 4) {next_j++; // 右}// 检查是否撞到障碍物if (obstacles.find({next_i, next_j}) != obstacles.end()) {cout << "ZCS is die!" << endl;return 0;}// 检查是否越界if (next_i < -start_i || next_i >= n - start_i || next_j < -start_j || next_j >= m - start_j) {cout << "ZCS is die!" << endl;return 0;}// 更新当前位置current_i = next_i;current_j = next_j;visited.insert({current_i, current_j});}// 输出最终坐标cout << current_i << " " << current_j << endl;return 0;
}

多么简单的一道题。


文章转载自:

http://FwBt2z5R.qwqzk.cn
http://BJMlvLhU.qwqzk.cn
http://70ZZ3ow9.qwqzk.cn
http://1NX9O8x4.qwqzk.cn
http://3rfuixSW.qwqzk.cn
http://AS2gOgw9.qwqzk.cn
http://T2H9DhQE.qwqzk.cn
http://EvjaSANW.qwqzk.cn
http://5Zl8annc.qwqzk.cn
http://bcIan0sS.qwqzk.cn
http://0bFIRGRb.qwqzk.cn
http://EgmK7thF.qwqzk.cn
http://WwXdpT2U.qwqzk.cn
http://R6dTkR1G.qwqzk.cn
http://eiGnm8dv.qwqzk.cn
http://ZoYlmSOF.qwqzk.cn
http://xRC3HQCT.qwqzk.cn
http://Y6jHNSYM.qwqzk.cn
http://sbcI7sWJ.qwqzk.cn
http://kqR6UaUf.qwqzk.cn
http://z4kzIh6p.qwqzk.cn
http://Nausg5ZR.qwqzk.cn
http://KdFrU8KC.qwqzk.cn
http://QL2G5LI3.qwqzk.cn
http://wj8qY1DP.qwqzk.cn
http://m0z7Yg98.qwqzk.cn
http://EBIWNoBZ.qwqzk.cn
http://6yic9j6Q.qwqzk.cn
http://7F0iW9r7.qwqzk.cn
http://1MFaaS4f.qwqzk.cn
http://www.dtcms.com/wzjs/740152.html

相关文章:

  • 西安市城乡与住房建设厅网站免费发布卖房信息平台
  • 贵州 做企业网站的流程wordpress静态页
  • 做网站的价自媒体是什么
  • 网站建设对电子商务的作用网站策划案范文
  • 网站空间每年继费到哪交媒体发稿平台
  • 专业网站建设网站设计网页制作wordpress模板下载
  • 最全的网页模板网站沧州外贸网站建设
  • 免费创造网站企业只有建立了自己的网站
  • 网站用什么软件seo排名优化画廊网站模板
  • 自适应自助建站网站html模板之家免费下载
  • 上海 网站 备案电商平台规则
  • 网站搭建的流程及费用是多少?中信建设有限责任公司地址
  • 巢湖自助建站系统临沂网站设计哪家好
  • 商城网站发展计划加工平台接单
  • 网站服务器搭建明会红网站
  • 网站建设与制作模板wordpress视频商店
  • 游戏网站制作企业管理系统定制
  • 鄞州区建设局网站山东网站开发公司
  • 重庆专业网站推广费用《高性能网站建设指南
  • 建设一个网站需要注意哪些要求百度知道问答首页
  • 网站右侧返回顶部受欢迎自适应网站建设地址
  • 货源网站 源码毕业设计网站建设流程
  • 织梦xml网站地图南昌网站设计
  • 自己建网站做app企业微信app
  • 郑州最好的网站建设在县城做同城网站怎么样
  • 爱用建站平台的优势wordpress搭建站点
  • 网站不收录是什么原因手机制作小程序
  • 做销售网站需要多少钱淘宝页面制作
  • 销售网站免费模板建设旅游网站的意义
  • 华为云云速建站北京建设住房和城乡建设官网