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

上海网站制作公司报价网站推广策划方案范文

上海网站制作公司报价,网站推广策划方案范文,关于网站开发的论文,浙江建设信息港首页介绍【题目链接】 洛谷 P3956 [NOIP2017 普及组] 棋盘 ybt 1416:【17NOIP普及组】棋盘 【题目考点】 1. 深搜:深搜回溯 2. 深搜剪枝:最优化剪枝 【解题思路】 搜索从左上角到右下角的所有走法中花费金币最少的走法。 需要使用深搜回溯&…

【题目链接】

洛谷 P3956 [NOIP2017 普及组] 棋盘
ybt 1416:【17NOIP普及组】棋盘

【题目考点】

1. 深搜:深搜回溯
2. 深搜剪枝:最优化剪枝

【解题思路】

搜索从左上角到右下角的所有走法中花费金币最少的走法。
需要使用深搜回溯,搜索从一点出发到另一点的所有路径。
设二维数组mp记录每个格子的颜色,如果无色记为-1,1是黄色,0是红色。
在某次搜索时,当前位置为(sx, sy),下一个要访问的位置为(x, y),已经使用金币coin。
如果当前位置(sx,sy)是有色的

  • 如果下一个位置(x,y)是有色的
    • 如果二者颜色相同,到下个位置时花的金币数coin不变
    • 如果颜色不同,到下个位置花的金币数coin加1。
  • 如果下一个位置(x,y)是无色的
    • 将下一个位置通过魔法变为与(sx, sy)同色,到下个位置的金币数coin加2,

如果当前位置(sx, sy)是无色的,但是变成了col色。那么下个位置(x, y)不可以是无色的。
如果下个位置(x,y)是有色的,那么

  • 如果(x,y)位置的颜色和col相同,那么到下个位置时花的金币数coin不变
  • 如果(x,y)位置的颜色和col不同,到下个位置花的金币数coin加1。

设二维数组mc,mc[i][j]表示到达(i, j)位置时花的最少金币数。
最优性剪枝:如果到(sx, sy)位置花的钱数coin比已知的一种到(sx, sy)位置的走法花钱mc[sx][sy]相等或更多,则没必要再搜索了,直接返回。
这里必须进行最优性剪枝,否则搜索会超时。

【题解代码】

解法1:深搜
#include<bits/stdc++.h>
using namespace std;
#define N 105
#define INF 0x3f3f3f3f
int m, n, mp[N][N], minCoin = INF, mc[N][N];//mp[i][j]:为1代表黄色,0代表红色,-1代表无色 mc[i][j],到i,j的最小钱数 
int dir[4][2] = {{0,1},{0,-1},{-1,0},{1,0}};
bool vis[N][N];
void dfs(int sx, int sy, int coin, int col)//col:如果(sx,sy)本来是无色,col为(sx,sy)通过魔法变化后的颜色 
{if(coin >= mc[sx][sy])//最优化剪枝,如果到当前位置花的钱数比已知的一种到当前位置的走法花钱更多,则没必要再搜索了。 return;elsemc[sx][sy] = coin;if(sx == m && sy == m)//到达终点点 return; for(int i = 0; i < 4; ++i){int x = sx + dir[i][0], y = sy + dir[i][1];//x,y是sx,sy周围的位置 if(x >= 1 && x <= m && y >= 1 && y <= m && !vis[x][y]){vis[x][y] = true;if(mp[sx][sy] == 1 || mp[sx][sy] == 0)//如(sx, sy)是红黄 {if(mp[x][y] == -1)//如果下一个位置无色 dfs(x, y, coin + 2, mp[sx][sy]);//变成与出发点相同的颜色 else if(mp[x][y] == mp[sx][sy])//颜色相同 dfs(x, y, coin, -1);else//颜色不同 dfs(x, y, coin + 1, -1);}else if(mp[sx][sy] == -1 && mp[x][y] != -1)//如(sx, sy)是无色 {//如果无色的下一个格子还是无色,则不访问 if(mp[x][y] == col)//颜色相同 dfs(x, y, coin, -1);						else//颜色不同 dfs(x, y, coin + 1, -1);}vis[x][y] = false;}}
}
int main()
{int x, y, c;memset(mp, -1, sizeof(mp));cin >> m >> n;for(int i = 1; i <= n; ++i){cin >> x >> y >> c;mp[x][y] = c;}memset(mc, 0x3f, sizeof(mc));dfs(1, 1, 0, -1);if(mc[m][m] == INF)cout << -1;elsecout << mc[m][m];return 0;
}
http://www.yayakq.cn/news/180215/

相关文章:

  • 长沙官网网站推广优化产品seo怎么优化
  • 网络平台运营是做什么的纯ajax网站如何做seo
  • 网站关键词收费贵阳网站建设app开发
  • 网站销售的优势贵州省建设厅官网站首页
  • 云南昆明网站建设网站浮动咨询代码
  • 移动网站性能北京正邦网站建设
  • 58同城网站建设要多少钱大连制作公司网站
  • 建设银行湖南省分行官方网站网站结构优化包括哪些
  • 济南网站制作推广如何搭建网站教程
  • 网站建设销售技巧和话术wordpress搭建商城网站
  • 上海做网站公司qinmoo建设商城网站视频教学
  • 网站建设学什么书wordpress 文章目录导航
  • 看公狍和女人做爰网站北京网站设计的公司
  • 长沙品牌网站设计做个小网站大概多少钱
  • wordpress文章tagseo导航
  • 网站建怎么通过建站来赚钱
  • 扬州做网站的公司常熟做网站
  • 网教网站源码网站建设建设意见
  • 网站备案成功后该怎么做wordpress侧栏推荐文章
  • 阿里巴巴网站网络营销的影响上海企业注销简易流程
  • 网站开发网校和平天津网站建设
  • 戴尔网站建设网页设计尺寸1440
  • 温州建设诚信评价网站公示wordpress php配置文件
  • 上海手机网站制作公司网站建设系统哪家便宜些
  • 广东省城乡建设部网站成都展览展示有限公司
  • 网页模板下载网站搜索引擎优化规则
  • 深圳企业网站哪家强海天建设集团公司网站
  • 网站建设主要包括什么信得过的网站开发推广
  • 服务器上面建设网站网站建设的实验总结
  • 莱阳有网站建设推广的吗wordpress 百度cdn