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

wordpress开发视频网站模板长沙市seo百度关键词

wordpress开发视频网站模板,长沙市seo百度关键词,自己做的网站怎么发布win7,网络应用服务管理2.数字接龙 - 蓝桥云课 问题描述 小蓝最近迷上了一款名为《数字接龙》的迷宫游戏,游戏在一个大小为 NN 的格子棋盘上展开,其中每一个格子处都有着一个 0…K−1 之间的整数。游戏规则如下: 从左上角 (0,0) 处出发,目标是到达右下…

2.数字接龙 - 蓝桥云课

问题描述

小蓝最近迷上了一款名为《数字接龙》的迷宫游戏,游戏在一个大小为 N×N 的格子棋盘上展开,其中每一个格子处都有着一个 0…K−1 之间的整数。游戏规则如下:

  1. 从左上角 (0,0) 处出发,目标是到达右下角 (N−1,N−1) 处的格子,每一步可以选择沿着水平/垂直/对角线方向移动到下一个格子。
  2. 对于路径经过的棋盘格子,按照经过的格子顺序,上面的数字组成的序列要满足:0,1,2,…,K−1,0,1,2,…,K−1,0,1,2,…。
  3. 途中需要对棋盘上的每个格子恰好都经过一次(仅一次)。
  4. 路径中不可以出现交叉的线路。例如之前有从 (0,0) 移动到 (1,1),那么再从 (1,0) 移动到 (0,1) 线路就会交叉。

为了方便表示,我们对可以行进的所有八个方向进行了数字编号,如下图2所示;因此行进路径可以用一个包含 0…7 之间的数字字符串表示,如下图1是一个迷宫示例,它所对应的答案就是:41255214。

输入格式
第一行包含两个整数 N, K。
接下来输入 N 行,每行 N 个整数表示棋盘格子上的数字。

输出格式
输出一行表示答案。如果存在答案输出路径,否则输出 -1。

样例输入
 

3 3
0 2 0
1 1 1
2 0 2

样例输出
 

41255214

样例说明
行进路径如图 1 所示。

评测用例规模与约定
对于 80% 的评测用例: 1 ≤ N ≤ 5。
对于 100% 的评测用例: 1 ≤ N ≤ 10, 1 ≤ K ≤ 10。

思路:

75%无判断交叉的代码

代码:

#include <bits/stdc++.h>
using namespace std;// 0   1   2  3  4  5  6   7
int dx[] = {-1, -1, 0, 1, 1, 1, 0, -1};
int dy[] = {0, 1, 1, 1, 0, -1, -1, -1};
int n,k;
int a[15][15];
bool found;
bool vis[15][15];
vector <int> num;
unordered_map <int,int> mp;
bool check(int x,int y,int kx,int ky)
{if(vis[x+kx][y] && vis[x][y+ky])//如果这两个点为真,那么就是斜线 return false;elsereturn false;
}
void dfs(int x,int y,int step,int cnt)
{if(found)return;if(x == n && y == n){if(step == n*n){found = true;for(int j = 0 ; j < num.size() ; j++)cout << num[j];return;	}}  for(int i = 0 ; i < 8 ; i++){int tx = x + dx[i];int ty = y + dy[i];/*	if(mp[dx[i]*8+dy[i]]== 1 || mp[dx[i]*8+dy[i]]== 3 || mp[dx[i]*8+dy[i]]== 5 || mp[dx[i]*8+dy[i]]== 7) //判断斜线 {if(check(tx,ty,dx[i],dy[i])) continue; }*/if(!vis[tx][ty] && tx >= 1 && tx <= n && ty >=1 && ty <= n && a[tx][ty] == cnt){vis[tx][ty] = true;num.push_back(mp[dx[i]*8+dy[i]]);dfs(tx,ty,step+1,(cnt+1)%k);vis[tx][ty] = false;num.pop_back();}}}
int main()
{cin >> n >> k;for(int i = 1 ; i <= n ; i++){for(int j = 1 ; j <= n ; j++){cin >> a[i][j];}}for(int i = 0 ; i < 8 ; i++){
//		cout <<"dx[i]*dy[i] :" << dx[i]*8+dy[i] <<"----------------mp[dx[i]*8+dy[i]]] :" << 	mp[dx[i]*8+dy[i]] << endl;mp[dx[i]*8+dy[i]] = i;}vis[1][1] = true; dfs(1,1,1,1);if(found){}elsecout << -1;return 0;
}

思路:

利用图论知识,将边连接起来,然后就可以判断是否有交叉,点的话,将二维转化为一维作为点的下标。记得数组要开大点。

代码:

#include <bits/stdc++.h>
using namespace std;// 0   1   2  3  4  5  6   7
int dx[] = {-1, -1, 0, 1, 1, 1, 0, -1};
int dy[] = {0, 1, 1, 1, 0, -1, -1, -1};
int n,k;
int a[15][15];
bool found;
bool vis[15][15];
bool attached[500][500]; 
vector <int> num;
unordered_map <int,int> mp;
bool check(int x,int y,int kx, int ky)
{if(attached[(x+kx)*10+y][x*10+(y+ky)])//如果这两个点为真,那么就是交叉 return true;elsereturn false;
}
void dfs(int x,int y,int step,int cnt)
{if(found)return;if(x == n && y == n){if(step == n*n){found = true;for(int j = 0 ; j < num.size() ; j++)cout << num[j];return;	}}  for(int i = 0 ; i < 8 ; i++){int tx = x + dx[i];int ty = y + dy[i];if(!vis[tx][ty] && tx >= 1 && tx <= n && ty >=1 && ty <= n && a[tx][ty] == cnt){if(mp[dx[i]*8+dy[i]]== 1 || mp[dx[i]*8+dy[i]]== 3 || mp[dx[i]*8+dy[i]]== 5 || mp[dx[i]*8+dy[i]]== 7) //判断会出现斜线的情况 {if(check(x,y,dx[i],dy[i])) continue; }attached[x*10+y][tx*10+ty] = true;//二维转化为一维,对应是否建立连接 attached[tx*10+ty][x*10+y] = true;//二维转化为一维,对应是否建立连接 vis[tx][ty] = true;num.push_back(mp[dx[i]*8+dy[i]]);dfs(tx,ty,step+1,(cnt+1)%k);attached[x*10+y][tx*10+ty] = false;//二维转化为一维,对应是否建立连接 attached[tx*10+ty][x*10+y] = false;//二维转化为一维,对应是否建立连接 vis[tx][ty] = false;num.pop_back();}}}
int main()
{cin >> n >> k;for(int i = 1 ; i <= n ; i++){for(int j = 1 ; j <= n ; j++){cin >> a[i][j];}}for(int i = 0 ; i < 8 ; i++)//作为一种映射方向 {
//		cout <<"dx[i]*dy[i] :" << dx[i]*8+dy[i] <<"----------------mp[dx[i]*8+dy[i]]] :" << 	mp[dx[i]*8+dy[i]] << endl;mp[dx[i]*8+dy[i]] = i;}vis[1][1] = true; dfs(1,1,1,1);if(found){}elsecout << -1;return 0;
}


文章转载自:

http://lxVuBLYb.ywgrr.cn
http://Dp7BxDRT.ywgrr.cn
http://00Tz5J9r.ywgrr.cn
http://CAOi6ugi.ywgrr.cn
http://lCx7cQt4.ywgrr.cn
http://vVK3lRqF.ywgrr.cn
http://368EpeFv.ywgrr.cn
http://ySC69nyT.ywgrr.cn
http://0sdurIxR.ywgrr.cn
http://3eGDHdjQ.ywgrr.cn
http://xW0vrHHp.ywgrr.cn
http://FexdsdYW.ywgrr.cn
http://jKeCJ1cw.ywgrr.cn
http://uW2WlVtT.ywgrr.cn
http://V0BzC2NO.ywgrr.cn
http://6ASD7DON.ywgrr.cn
http://K3967ai2.ywgrr.cn
http://2chewLrS.ywgrr.cn
http://tzGACoNg.ywgrr.cn
http://vIxwawe8.ywgrr.cn
http://nQ2ZUZ3O.ywgrr.cn
http://yYGptNn6.ywgrr.cn
http://VSqcvioW.ywgrr.cn
http://HWVokY1Z.ywgrr.cn
http://hRA8qHNP.ywgrr.cn
http://a9M7rzK6.ywgrr.cn
http://oV2cItIA.ywgrr.cn
http://t3wlW6er.ywgrr.cn
http://9wfTVtDr.ywgrr.cn
http://hZGjpKSs.ywgrr.cn
http://www.dtcms.com/wzjs/717927.html

相关文章:

  • 西安哪里可以做网站网站开发平台是什么
  • wordpress设置关站商业网站建立
  • 公司网站建设代码都写完了成都91获客
  • 海洋馆网站建设wordpress图片链接
  • 上线一个网站需要哪些条件企业管理app软件
  • 苏州做网站哪家好设计制作费用计入什么会计科目
  • wp做图网站微信平台专业网站建设
  • 外贸企业网站开发淄博网站制作设计
  • 网站建设需要考虑的问题网站建设公司招网站设计
  • 网站我们的客户网站图片切换代码
  • 金坛做网站哪家好网站加友情链接
  • 遨游网站建设有限公司手机网站域名哪里注册
  • 手机网站 等比缩放个人简历模板免费下载电子版
  • 东莞网站建设市场分析望野王维
  • 动态效果的网站建设技术传奇开服表
  • 中国建设银行网站查询佛山企业手机网站建设
  • 河北新亚建设集团网站建设环保网站的目的与功能分析
  • 连云港做网站哪家好美工培训哪个机构好
  • 网站建设软件appqq空间个人网站
  • 长沙专业做网站公司网站建设和开发
  • 网站建设公司知识wordpress收件邮箱
  • 网站建设lhempire网站建建设心的
  • 跟我学做纸艺花网站浙江建设继续教育网站
  • 用vs2010做购物网站电商运营面试问题及回答
  • 漳州网站建设哪家最权威同ip多域名做同行业网站
  • 沈阳制作网站建站软件生成器下载
  • 爱站工具包怎么使用专业的昆明网站建设
  • 网站建设与运营市场风险怎么查看网站空间是否到期
  • 网站icp备案信息是什么意思南京建站在线咨询
  • 网站建设和维护管理预算郴州