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

江西师范大学两学一做专题网站电子商务网站建设论文开题报告

江西师范大学两学一做专题网站,电子商务网站建设论文开题报告,圣诞树html网页代码,深圳哪些公司做网站文章目录1.内容概述2.岛屿数量2.1 题目描述2.2 DFS深度搜索算法思路2.3 BFS宽度搜索算法思路2.4 C代码实现3.单词接龙3.1 题目描述3.2 算法思路3.3 C代码实现4.单词接龙 II4.1 题目描述4.2 算法思路5.火柴拼正方形5.1 题目描述5.2 算法思路5.3 代码实现5.4 算法思路25.5 代码实… 文章目录1.内容概述2.岛屿数量2.1 题目描述2.2 DFS深度搜索算法思路2.3 BFS宽度搜索算法思路2.4 C代码实现3.单词接龙3.1 题目描述3.2 算法思路3.3 C代码实现4.单词接龙 II4.1 题目描述4.2 算法思路5.火柴拼正方形5.1 题目描述5.2 算法思路5.3 代码实现5.4 算法思路25.5 代码实现1.内容概述 2.岛屿数量 2.1 题目描述 给你一个由 ‘1’陆地和 ‘0’水组成的的二维网格请你计算网格中岛屿的数量。 岛屿总是被水包围并且每座岛屿只能由水平方向和/或竖直方向上相邻的陆地连接形成。 此外你可以假设该网格的四条边均被水包围。 示例 1输入grid [[1,1,1,1,0],[1,1,0,1,0],[1,1,0,0,0],[0,0,0,0,0] ] 输出1示例 2输入grid [[1,1,0,0,0],[1,1,0,0,0],[0,0,1,0,0],[0,0,0,1,1] ] 输出32.2 DFS深度搜索算法思路 #includeiostream #includevector using namespace std;void DFS(vectorvectorint mark, vectorvectorchar grid, int x, int y) {mark[x][y] 1;int dx[] { -1,1,0,0 };int dy[] { 0,0,-1,1 };for (int i 0; i 4; i) {int new_x x dx[i];int new_y y dy[i];if (new_x 0 || new_y 0 || new_x mark.size() || new_y mark[new_x].size()) {continue;}if (mark[new_x][new_y] 0 grid[new_x][new_y] 1) {DFS(mark, grid, new_x, new_y);}} }int main() {vectorvectorchar grid { {1,1,1,0,0},{1,1,0,0,0},{0,0,1,0,0},{0,0,0,1,1} };vectorvectorint mark { {0,0,0,0,0},{0,0,0,0,0},{0,0,0,0,0},{0,0,0,0,0},};DFS(mark, grid, 1, 1);for (int i 0 ; imark.size(); i) {for (int j 0; j mark[i].size(); j) {cout mark[i][j] ;}cout endl;}return 0; }1 1 1 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 02.3 BFS宽度搜索算法思路 2.4 C代码实现 class Solution { public:void DFS(vectorvectorint mark,vectorvectorchar grid,int x,int y){mark[x][y]1;int dx[]{-1,1,0,0};int dy[]{0,0,-1,1};for(int i0;i4;i){int new_xxdx[i];int new_yydy[i];if(new_x0||new_y0||new_xmark.size()||new_ymark[new_x].size()){continue;}if(mark[new_x][new_y]0grid[new_x][new_y]1){DFS(mark,grid,new_x,new_y);}}}void BFS(vectorvectorint mark, vectorvectorchar grid, int x, int y) {queuepairint, int Q;int dx[] { -1,1,0,0 };int dy[] { 0,0,-1,1 };Q.push(make_pair(x, y));mark[x][y] 1;while (!Q.empty()) {x Q.front().first;y Q.front().second;Q.pop();for (int i 0; i 4; i) {int new_x x dx[i];int new_y y dy[i];if (new_x 0 || new_y 0 || new_x mark.size() || new_y mark[new_x].size()) {continue;}if (mark[new_x][new_y] 0 grid[new_x][new_y] 1) {mark[new_x][new_y] 1;Q.push(make_pair(new_x, new_y));}}}}int numIslands(vectorvectorchar grid) {int island0;vectorvectorint mark;for(int i0;igrid.size();i){mark.push_back(vectorint());for(int j0;jgrid[i].size();j){mark[i].push_back(0);}} for(int x0;xgrid.size();x){for(int y0;ygrid[x].size();y){if(mark[x][y]0grid[x][y]1){DFS(mark,grid,x,y);//或者BFS(mark,grid,x,y);island;}}} return island;} };3.单词接龙 3.1 题目描述 字典 wordList 中从单词 beginWord 和 endWord 的 转换序列 是一个按下述规格形成的序列 序列中第一个单词是 beginWord 。 序列中最后一个单词是 endWord 。 每次转换只能改变一个字母。 转换过程中的中间单词必须是字典 wordList 中的单词。给你两个单词 beginWord 和 endWord 和一个字典 wordList 找到从 beginWord 到 endWord 的 最短转换序列 中的 单词数目 。如果不存在这样的转换序列返回 0。 示例 1输入beginWord hit, endWord cog, wordList [hot,dot,dog,lot,log,cog] 输出5 解释一个最短转换序列是 hit - hot - dot - dog - cog, 返回它的长度 5。示例 2输入beginWord hit, endWord cog, wordList [hot,dot,dog,lot,log] 输出0 解释endWord cog 不在字典中所以无法进行转换。3.2 算法思路 bool connect(const string word1,const string word2){int cnt0;for(int i0;iword1.length();i){if(word1[i]!word2[i]){cnt;}}return cnt1;}void construct_graph(string beginWord,vectorstring wordList,mapstring,vectorstring graph){wordList.push_back(beginWord);for(int i0;iwordList.size();i){graph[wordList[i]]vectorstrng();}for(int i0;iwordList.size();i){for(int ji1;jwordList.size();j){if(connect(wordList[i]),wordList[j]){graph[wordList[i]].push_back(wordList[j]);graph[wordList[j]].push_back(wordList[i]);}}}}3.3 C代码实现 class Solution { public:bool connect(const string word1,const string word2){int cnt0;for(int i0;iword1.length();i){if(word1[i]!word2[i]){cnt;}}return cnt1;}void construct_graph(string beginWord,vectorstring wordList,mapstring,vectorstring graph){wordList.push_back(beginWord);for(int i0;iwordList.size();i){graph[wordList[i]]vectorstring();}for(int i0;iwordList.size();i){for(int ji1;jwordList.size();j){if(connect(wordList[i],wordList[j])){graph[wordList[i]].push_back(wordList[j]);graph[wordList[j]].push_back(wordList[i]);}}}}int BFS_graph(string beginWord,string endWord,mapstring,vectorstring graph){queuepairstring,int Q;setstring visit;Q.push(make_pair(beginWord,1));visit.insert(beginWord);while(!Q.empty()){string nodeQ.front().first;int stepQ.front().second;Q.pop();if(nodeendWord){return step;}vectorstring neighborgraph[node];for(int i0;ineighbor.size();i){if(visit.find(neighbor[i])visit.end()){Q.push(make_pair(neighbor[i],step1));visit.insert(neighbor[i]);}}}return 0;}int ladderLength(string beginWord, string endWord, vectorstring wordList) {mapstring,vectorstring graph;construct_graph(beginWord,wordList,graph);int resultBFS_graph(beginWord,endWord,graph);return result;} };4.单词接龙 II 4.1 题目描述 按字典 wordList 完成从单词 beginWord 到单词 endWord 转化一个表示此过程的 转换序列 是形式上像 beginWord - s1 - s2 - … - sk 这样的单词序列并满足 每对相邻的单词之间仅有单个字母不同。 转换过程中的每个单词 si1 i k必须是字典 wordList 中的单词。 注意beginWord 不必是字典 wordList 中的单词。 sk endWord给你两个单词 beginWord 和 endWord 以及一个字典 wordList 。请你找出并返回所有从 beginWord 到 endWord 的 最短转换序列 如果不存在这样的转换序列返回一个空列表。每个序列都应该以单词列表 [beginWord, s1, s2, …, sk] 的形式返回。 示例 1输入beginWord hit, endWord cog, wordList [hot,dot,dog,lot,log,cog] 输出[[hit,hot,dot,dog,cog],[hit,hot,lot,log,cog]] 解释存在 2 种最短的转换序列 hit - hot - dot - dog - cog hit - hot - lot - log - cog示例 2输入beginWord hit, endWord cog, wordList [hot,dot,dog,lot,log] 输出[] 解释endWord cog 不在字典 wordList 中所以不存在符合要求的转换序列。4.2 算法思路 5.火柴拼正方形 5.1 题目描述 还记得童话《卖火柴的小女孩》吗现在你知道小女孩有多少根火柴请找出一种能使用所有火柴拼成一个正方形的方法。不能折断火柴可以把火柴连接起来并且每根火柴都要用到。 输入为小女孩拥有火柴的数目每根火柴用其长度表示。输出即为是否能用所有的火柴拼成正方形。 示例 1:输入: [1,1,2,2,2] 输出: true解释: 能拼成一个边长为2的正方形每边两根火柴。示例 2:输入: [3,3,3,3,4] 输出: false解释: 不能用所有火柴拼成一个正方形。5.2 算法思路 5.3 代码实现 class Solution { public:bool makesquare(vectorint matchsticks) {if(matchsticks.size()4){return false;}int sum0;for(int i0;imatchsticks.size();i){summatchsticks[i];}if(sum%4){return false;}sort(matchsticks.rbegin(),matchsticks.rend());int bucket[4]{0};return generate(0,matchsticks,sum/4,bucket);} private:bool generate(int i,vectorint matchsticks,int target,int bucket[]){if(imatchsticks.size()){return bucket[0]targetbucket[1]targetbucket[2]targetbucket[3]target;}for(int j0;j4;j){if(bucket[j]matchsticks[i]target){continue;}bucket[j]matchsticks[i];if(generate(i1,matchsticks,target,bucket)){return true;}bucket[j]-matchsticks[i];}return false;} };5.4 算法思路2 5.5 代码实现 class Solution { public:bool makesquare(vectorint matchsticks){if(matchsticks.size()4){return false;}int sum0;for(int i0;imatchsticks.size();i){summatchsticks[i];}if(sum%4){return false;}int targetsum/4;vectorint ok_subset;vectorint ok_half;int all1matchsticks.size();for(int i0;iall;i){int sum0;for(int j0;jmatchsticks.size();j){if(i(1j)){summatchsticks[j];}}if(sumtarget){ok_subset.push_back(i);}}for(int i0;iok_subset.size();i){for(int ji1;jok_subset.size();j){if((ok_subset[i]ok_subset[j])0){ok_half.push_back(ok_subset[i]|ok_subset[j]);}}}for(int i0;iok_half.size();i){for(int ji1;jok_half.size();j){if((ok_half[i]ok_half[j])0){return true;}}}return false;} }
http://www.zqtcl.cn/news/458518/

相关文章:

  • 广东网站建设多少钱比较大气的网站
  • asp.net怎么做登录网站网站建设服务网络服务
  • 网站备案级别做公司网站要多少钱
  • 湛江网站seo网站定制排名
  • 为什么网站之有首页被收录企业网站发布图片文章
  • 做网站要准备内蒙做网站
  • 邯郸市搞网站服务务的吗网站建设怎么在图片上加字
  • 卡片风格网站我想做跑腿网站怎么做
  • 公司网站建设前期情况说明如何找厂家地址
  • 超值的郑州网站建设wordpress 移除 新闻
  • 长春网络营销网站徐州手机模板建站
  • 微网站开发+在线商城建设局招标网站
  • 网站开发的基本过程关岭做网站
  • 高端网站哪种好WordPress媒体库丢失
  • 澄迈网站新闻建设宣传视频
  • 南昌优化网站排名公司建设网站的步骤
  • 一个人做网站wordpress如何加链接
  • 查网站服务器所在地笔记本电脑安装wordpress
  • 石家庄网站推广专家php网站分类目录源码
  • 盐城市城乡建设局门户网站低代码开发软件
  • 网站建设中的html深圳建设网站需要多少钱
  • 南阳公司网站制作品牌推广工作内容
  • 网站被刷流量怎么办红色php企业网站模板下载
  • 做现货黄金的金融网站设计平台app
  • 淘宝客手机网站搭建网站设计专业公司
  • 做网站用的图片怎样压缩钓鱼网站的制作教程
  • 建设网站类型wordpress竖版图片尺寸
  • 网站建设数据库ER图怎么画公司网站建设建议书
  • 网站建设网站制作有限排名优化课程
  • 绵竹网站建设佛山网络营销推广