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

商业类网站的设计与制作苏州seo关键词排名

商业类网站的设计与制作,苏州seo关键词排名,怎样用微信做购物网站,html5 社团网站模板 代码下载目录 力扣37.解数独 力扣79.单词搜索 力扣1219.黄金矿工 力扣980.不同路径III 力扣37.解数独 我开始没有想到这个三维数组判断,我开始是写了9个if,else,然后发现太麻烦,过于奇怪了,去看了一眼题解,他并没有看具体里…

目录

力扣37.解数独

力扣79.单词搜索

力扣1219.黄金矿工

力扣980.不同路径III


力扣37.解数独

我开始没有想到这个三维数组判断,我开始是写了9个if,else,然后发现太麻烦,过于奇怪了,去看了一眼题解,他并没有看具体里面的数组,而是把她分成一个大块,9个大块,统计一个大块之后,不去细节的遍历具体哪9个小块

class Solution {boolean row[][];boolean col[][];boolean grid[][][];public boolean dfs(char[][]board){ for(int i=0;i<9;i++){for(int j=0;j<9;j++){if(board[i][j]=='.'){//我们主动填写数字for(int k=1;k<=9;k++){if(!row[i][k]&&!col[j][k]&&!grid[i/3][j/3][k]){row[i][k]=col[j][k]=grid[i/3][j/3][k]=true;      board[i][j]=(char)('0'+k);//我需要知道当前层的情况,假如是正确,那么要返回,不然假如他说错误的就需要返回,那么他会到最后一层一直都返回true,再一直返回回来。if(dfs(board)==true) return true;board[i][j]='.';row[i][k]=col[j][k]=grid[i/3][j/3][k]=false;       }    }
//假如每个都无法填写,就直接返回false;因为这个填写不正确,可能是上一个的错误return false;}}}return true;}public void solveSudoku(char[][] board) {row=new boolean[9][10];col=new boolean[9][10];grid=new boolean[3][3][10];for(int i=0;i<9;i++){for(int j=0;j<9;j++){//在这里检查是否有数字int num=board[i][j]-'0';if(num>=1&&num<=9){
//统计当前的所有数字,并且给他对应的行列,9个大块进行标记row[i][num]=col[j][num]=grid[i/3][j/3][num]=true;}} }dfs(board);}
}

力扣79.单词搜索

单词搜索,我的想法开始是用bfs,为啥不用勒,是因为bfs俺会,嘿嘿,所以试试dfs,但是dfs实际内层还是bfs的核心

class Solution {char[]word;int n;int m;boolean[][]vis;int[]dx={0,0,1,-1};int[]dy={1,-1,0,0};Queue<int[]>q;//k表示当前到第几个字母了public boolean dfs(char[][]board,int k){if(k>=word.length){return true;}while(!q.isEmpty()){int sz=q.size();while(sz!=0){int[]t=q.poll();for(int i=0;i<4;i++){int x=dx[i]+t[0];int y=dy[i]+t[1];if(x>=0&&y>=0&&x<n&&y<m&&vis[x][y]==false&&board[x][y]==word[k]){q.add(new int[]{x,y});vis[x][y]=true;if (dfs(board,++k)==true)return true;k--;vis[x][y]=false;}}sz--;}}if(q.isEmpty()&&k<word.length)return false;return true;}public boolean exist(char[][] board, String words) {word=words.toCharArray();q=new LinkedList<>();n=board.length;m=board[0].length;vis=new boolean[n][m];for(int i=0;i<n;i++){for(int j=0;j<m;j++){if(board[i][j]==word[0]){q.add(new int[]{i,j});vis[i][j]=true;if(dfs(board,1)==true)return true;vis[i][j]=false;}}}return false;}
}

力扣1219.黄金矿工

class Solution {int []dx={0,0,1,-1};int []dy={1,-1,0,0};int n;int m;int ret=0;int sum;boolean[][]vis;Queue<int[]>q=new LinkedList<>();public  int dfs(int[][] grid){while(!q.isEmpty()){int sz=q.size();while(sz!=0){int[]t=q.poll();for(int i=0;i<4;i++){int x=t[0]+dx[i];int y=t[1]+dy[i];if(x>=0&&y>=0&&x<n&&y<m&&vis[x][y]==false&&grid[x][y]!=0){sum+= grid[x][y];q.add(new int[]{x,y});vis[x][y]=true;ret =Math.max(dfs(grid),ret);sum-= grid[x][y];vis[x][y]=false;}}sz--;}}return sum;}public  int getMaximumGold(int[][] grid) {n=grid.length;m=grid[0].length;vis=new boolean[n][m];int max=0;for(int i=0;i<n;i++){for(int j=0;j<m;j++){if(grid[i][j]!=0){q.add(new int[]{i,j});vis[i][j]=true;sum+=grid[i][j];
//这里正常来说是不用这个比较一下,但是在第54个用例的时候,发现有一个是单个的最大,一个最大34,一个最大38,他是加在sum这里的ret=Math.max(ret,sum);dfs(grid);max=Math.max(max,ret);sum-=grid[i][j];vis[i][j]=false;}}}return  max;}
}

力扣980.不同路径III

版本1基于bfs的dfs,他的意思是说用一个队列来存储每一步的点,然后假如不满足条件,就回退到上一步,然后再去给他操作,这个时间比下面的要慢,主要是因为这个他的再每次到达2之后,都要去遍历一下这个vis数组,看看是不是都走完了。

class Solution {int m,n;boolean [][]vis;int[]dx={0,0,1,-1};int[]dy={1,-1,0,0};int ret,max;Queue <int[]>q=new LinkedList<>();public  int uniquePathsIII(int[][] grid) {n=grid.length;m=grid[0].length;vis=new boolean[n][m];for(int i=0;i<n;i++) {
//我把不能走的都定为true,这样就全部是 true了最后for (int j = 0; j < m; j++) {if ( grid[i][j] == -1) {vis[i][j] = true;}}}for(int i=0;i<n;i++){for(int j=0;j<m;j++){if(grid[i][j]==1){q.add(new int[]{i,j});vis[i][j]=true;dfs(grid);}}}return max;}public  boolean dfs(int[][] grid) {while(!q.isEmpty()){int sz=q.size();while(sz>0){int[]t=q.poll();if(grid[t[0]][t[1]]==2){for(int k=0;k<n;k++){for(int j=0;j<m;j++){if(vis[k][j]!=true) return false;}}ret++;max=Math.max(max,ret);return true;}for(int i=0;i<4;i++){int x=t[0]+dx[i];int y=t[1]+dy[i];if(x>=0&&y>=0&&x<n&&y<m&&vis[x][y]==false&&(grid[x][y]==0||grid[x][y]==2)){q.add(new int[]{x,y});vis[x][y]=true;dfs(grid);vis[x][y]=false;}}sz--;}}return true;}
}

dfs这个就没有队列,相当于是自己一个一个进,同时我们是传递当前节点,以及他的思路就是统计可以走的点,最后的点数够这个数目,就说明这个路径可以

class Solution {int m,n,step;int ret=0;boolean[][]vis;static int[]dx={0,0,1,-1};static int[]dy={1,-1,0,0};public  int uniquePathsIII(int[][] grid) {n=grid.length;m=grid[0].length;vis=new boolean[n][m];int bx=0;int by=0;//统计了所有0的个数,和所有的起点for(int i=0;i<n;i++){for(int j=0;j<m;j++){if(grid[i][j]==0) step++;else if(grid[i][j]==1){bx=i;by=j;}}}//统计开始的1和结束的2,所以需要加等2step+=2;vis[bx][by]=true;dfs(grid,bx,by,1);return ret;}public  void dfs(int[][] grid,int i,int j,int count){if(grid[i][j]==2){if(count==step){ret++;}return;}for(int k=0;k<4;k++){int x=i+dx[k];int y=j+dy[k];if(x>=0&&x<n&&y>=0&&y<m&&!vis[x][y]&&grid[x][y]!=-1){vis[x][y]=true;dfs(grid,x,y,count+1);vis[x][y]=false;}}}
}
http://www.dtcms.com/wzjs/44108.html

相关文章:

  • 多语言网站建设公司百度搜索引擎推广收费标准
  • 漯河网站建设哪家seo排名软件有用吗
  • 彩票网站制作网站关键词优化价格
  • 新闻网站建设目标在线优化seo
  • 关于企业网站建设的必要性优化疫情防控 这些措施你应该知道
  • 全媒体网站的建设怎么做app推广
  • java 网站开发源码网站 软件
  • 谷歌推广网站建设市场推广方案
  • 怎么检查网站有没有被挂马百度代理合作平台
  • 网站开发专业职称有哪些seo搜索引擎优化期末及答案
  • 网站域名注册信息登封网络推广
  • 北京疫情什么时候结束seo优化有百度系和什么
  • 哪个网站生鲜配送做的好2022最新引流推广平台
  • 制作制作网站开发西安网络优化培训机构公司
  • 网站建设 企业观点辅导机构
  • 网站做调查需要考虑的内容台州网络推广
  • 吉林省长春市长春网站建设哪家好外贸seo推广
  • 爱站工具想说超人下拉系统头条权重查询
  • 获取网站访客信息网站首页关键词如何优化
  • 政府网站模板贴吧深圳做推广哪家比较好
  • 国外游戏ui设计网站seo网站优化助理
  • 有了域名 接下来怎么做网站找片子有什么好的关键词
  • 小清新 轻音乐网站 wordpress百度电视剧风云榜
  • 宁波易企网做的网站如何搭建网站平台
  • 如何做网站家具导购百度推广创意范例
  • 全面的基础微网站开发网站友情链接美化代码
  • wordpress多站点不显示百度seo推广价格
  • 网站内链接分析网络营销推广策略有哪些
  • word网站的链接怎么做如何推广自己产品
  • 法院网站建设实施方案搭建网站费用是多少