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

做快消品的网站千助网站公司

做快消品的网站,千助网站公司,网站页面框架设计影响用户,湛江人才网招聘信息网刷题记录 *110. 字符串接龙105. 有向图的完全可达性邻接矩阵邻接表 106. 岛屿的周长深搜简化代码 *110. 字符串接龙 题目地址 使用广搜。 本题相当于求最短路径#xff0c;因此使用广搜。如何应用广搜是一个难点#xff0c;因为题目给的是字符串而非图的表示#xff08;邻… 刷题记录 *110. 字符串接龙105. 有向图的完全可达性邻接矩阵邻接表 106. 岛屿的周长深搜简化代码 *110. 字符串接龙 题目地址 使用广搜。 本题相当于求最短路径因此使用广搜。如何应用广搜是一个难点因为题目给的是字符串而非图的表示邻接矩阵、邻接表因此需要自行构建连接关系。 题目要求每一步只能修改一个字符因此从起始字符串开始对字符串中的每一个字符进行修改修改后在输入的字符串列表中查找是否存在若存在则放入队列中用于广搜同时记录步数1。若修改后的字符串等于结束字符则直接输出当前步数1. 使用广搜时搜索的每一圈内的字符串所记录的步数是一致的。 时间复杂度 O ( n 2 ) O(n^2) O(n2) 空间复杂度 O ( n 2 ) O(n^2) O(n2) // c #includebits/stdc.h using namespace std;int main(){string beginStr, endStr, str;int n;unordered_setstring strSet;cinn;cinbeginStrendStr;for(int i0; in; i){cinstr;strSet.insert(str);}// 记录访问过的路径以及路径长度unordered_mapstring, int visitMap;visitMap.insert({beginStr, 1});// BFSqueuestring que;que.push(beginStr);while(!que.empty()){string word que.front();que.pop();int path visitMap[word];// coutword: wordendl;// 更换单词里的一个字符for(int i0; iword.size(); i){string newWord word;// coutnewWord: newWordendl;for(int j0; j26; j){newWord[i] j a;// 可以到达结束字符则直接结束输出if(newWord endStr){coutpath1endl;return 0;}if(strSet.find(newWord)!strSet.end() visitMap.find(newWord) visitMap.end()){// visitMap[word] path 1;// 存入路径记录里visitMap.insert({newWord, path 1});// 入队 BFSque.push(newWord);// coutnewWordendl;}}}}cout0endl;return 0; }105. 有向图的完全可达性 leetcode题目地址 使用深度优先遍历探查是否能够到达每个结点。 时间复杂度 O ( n 2 ) O(n^2) O(n2) 空间复杂度 O ( n 2 ) O(n^2) O(n2) 邻接矩阵 // c #includebits/stdc.h using namespace std; int direction[][2] {0, 1, 0, -1, -1, 0, 1, 0}; void dfs(const vectorvectorint matrix,vectorbool result,int x, int y){result[y] true;for(int i1; imatrix.size(); i){if(matrix[y][i] !result[i]) dfs(matrix, visited, result, y, i);}} int main(){int n,k;cinnk;vectorvectorint matrix(n1, vectorint(n1, 0));vectorbool result(n1, false); // result[1] 1;int row,col;for(int i0; ik; i){cinrowcol;matrix[row][col] 1;}for(int j1; jn; j) {if(!result[j] matrix[1][j]){dfs(matrix, result, 1, j);}}for(int i2; in; i) {if(!result[i]){cout -1 endl;return 0;}}cout1endl;return 0; }邻接表 // c #includebits/stdc.h using namespace std; int direction[][2] {0, 1, 0, -1, -1, 0, 1, 0}; void dfs(const vectorlistint matrix,vectorbool result, int x){result[x] true;listint keys matrix[x];for(int key: keys){if(!result[key]){dfs(matrix, result, key);}}} int main(){int n,k;cinnk;vectorlistint matrix(n1);vectorbool result(n1, false); int row,col;for(int i0; ik; i){cinrowcol;matrix[row].push_back(col);}dfs(matrix, result, 1);for(int i1; in; i) {if(!result[i]){cout -1 endl;return 0;}}cout1endl;return 0; }106. 岛屿的周长 题目地址 遍历图当计算每一个岛屿方格的外周长。 初始状态下单个方格的周长为4。若当前方格的上下左右四个方向有相邻的岛屿方格则减去相邻方格数重合边数即为当前方格的外周长。将所有岛屿方格的外周长求和即为本题答案。 时间复杂度 O ( n 2 ) O(n^2) O(n2) 空间复杂度 O ( n 2 ) O(n^2) O(n2) 深搜 // c #includebits/stdc.h using namespace std; int direction[][2] {0, 1, 0, -1, -1, 0, 1, 0}; void dfs(const vectorvectorint matrix,vectorvectorbool visited,int result, int x, int y){visited[x][y] true;// 单个方格(x,y)的周长int count 4;for(int i0; i4; i){int nextx x direction[i][0];int nexty y direction[i][1];if(nextxmatrix.size()|| nextymatrix[0].size()|| nextx0 || nexty0) {continue;}if(matrix[nextx][nexty]) {// 减去重合边count--;if(!visited[nextx][nexty]) dfs(matrix, visited, result, nextx, nexty);}}// coutx y countendl;result count; } int main(){int n,m;cinnm;vectorvectorint matrix(n, vectorint(m, 0));vectorvectorbool visited(n, vectorbool(m, false));for(int i0; in; i){for(int j0; jm; j){cinmatrix[i][j];// coutmatrix[i][j] ;}// coutendl;}int result0;for(int i0; in; i){for(int j0; jm; j){if(matrix[i][j] !visited[i][j]){dfs(matrix, visited, result, i, j);}}}coutresult;return 0; }简化代码 其实无需深搜既可实现本题目标只需要查看每个岛屿单元格的外周长直接遍历邻接矩阵就可以实现。 时间复杂度 O ( n 2 ) O(n^2) O(n2) 空间复杂度 O ( 1 ) O(1) O(1) // c #includebits/stdc.h using namespace std; int direction[][2] {0, 1, 0, -1, -1, 0, 1, 0}; int main(){int n,m;cinnm;vectorvectorint matrix(n, vectorint(m, 0));for(int i0; in; i){for(int j0; jm; j){cinmatrix[i][j];}}int result0;for(int i0; in; i){for(int j0; jm; j){if(matrix[i][j]){// 初始化单元格周长int count 4;// 查看四个方向for(int k0; k4; k){int nextx i direction[k][0];int nexty j direction[k][1];// 越界if(nextxmatrix.size()|| nextymatrix[0].size()|| nextx0 || nexty0) {continue;}if(matrix[nextx][nexty]) {// 减去重合边count--;}} // couti j countendl;result count;}}}coutresult;return 0; }
http://www.w-s-a.com/news/199968/

相关文章:

  • 城乡和建设部建造师网站众筹平台网站建设
  • 外贸网站模板免费下载微网站制作软件
  • 一个新的网站怎么做宣传技术先进的网站建
  • 福建网站建设有限公司需求网站
  • 生物科技企业网站做的比较好的企业培训网站模板
  • 南京 高端网站建设网站备案密码怎么找回
  • 蛋糕店网站模板建设电子商务系统网站
  • 海口网站建设优化公司网站开发要加班吗
  • 建设一个网站需要注意哪些要求群晖的网站开发
  • 精通网站开发阅读网页视频下载慢怎么办
  • 网站标题的选择巴音郭楞库尔勒网站建设
  • 成都市网站建设服务商怎么进网站后台管理系统
  • 企业网站站内优化30岁做网站编辑
  • 与安网站建设网站建设征求意见稿
  • 学校网站推广做网站手把手
  • 网站开发遇到的难题wordpress文章调用
  • 网站建设做的好在线logo免费设计生成器标智客
  • 郑州做网站齿轮网站排名怎么做 site
  • 船员专用网站开发建议wordpress 图片占用id
  • 桌面软件开发跟网站开发那个上海网站备案在哪里查询
  • 罗湖网站建设陕西省建设网官网住房和城乡厅官网
  • 做一个网站的详细教学wordpress 忘记用户名密码
  • 建设银行的网站是多少wordpress添加新页面跳转
  • 网站设计费用抓取网站访客qq号码
  • 驾校视频网站模板郑州网站建设价格
  • 上海 有哪些做网站的公司成都企业网站备案流程
  • 移动端快速建站的方法青海公司网站建设
  • 网站重新搭建程序要多少钱移动互联网应用的使用情况
  • 学建站论坛给别人做网站怎么赚钱吗
  • 响应式网站代码校友会网站建设的目的