1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69
|
//使用BFS function BFS(arr,x,y,mark){ let dx = [-1,1,0,0] let dy = [0,0,-1,1] let q = [] q.push([x,y]) mark[x][y] = 1 while(q.length){ let x = q[0][0] let y = q[0][1] q.shift() for(let i=0;i<4;i++){ let newx = x+dx[i] let newy = y+dy[i] if(newx<0||newx>=arr.length||newy<0||newy>=arr[0].length){ continue } if(arr[newx][newy]==1&&mark[newx][newy]==0){ mark[newx][newy] = 1 q.push([newx,newy]) } } //q.shift() } console.log(mark) }
//使用DFS function DFS(arr,x,y,mark) { mark[x][y] = 1 let dx = [-1,1,0,0] let dy = [0,0,-1,1] for(let i=0;i<4;i++){ let newx = x+dx[i] let newy = y+dy[i] if(newx<0||newx>=arr.length||newy<0||newy>=arr[0].length){ continue } if(arr[newx][newy]==1&&mark[newx][newy]==0){ //mark[newx][newy] = 1 DFS(arr,newx,newy,mark) } } //console.log(mark) }
//主函数 function s(arr){ let nums = 0 //保存结果 let mark = [] for(let i=0;i<arr.length;i++){ mark[i] = [] for(let j=0;j<arr[0].length;j++){ mark[i][j]=0 } } console.log(mark) for(let i=0;i<arr.length;i++){ for(let j=0;j<arr[0].length;j++){ if(mark[i][j]==0&&arr[i][j]==1){ DFS(arr,i,j,mark) //或BFS(arr,i,j,mark) nums++ } } } return nums }
|
近期评论