We use cookies to ensure you have the best browsing experience on our website. Please read our cookie policy for more information about how we use cookies.
#include<iostream>#include<vector>#include<stack>voidexpandnode(std::vector<std::vector<int>>&grid,std::vector<std::vector<bool>>&visited,intnoder2,intnodec2,int&count){//create temp variablesinttempr=noder2;inttempc=nodec2;//create stack and add current to it, row in first, then column, so col first outstd::stack<int>queue;queue.push(tempr);queue.push(tempc);//change start node to visitedvisited[tempr][tempc]=true;while(!queue.empty()){//pop last vector(column at end, then row)tempc=queue.top();queue.pop();tempr=queue.top();queue.pop();//push unvisited 4-neighbors equal to 1 to queueif(tempr>0&&grid[tempr-1][tempc]==1&&visited[tempr-1][tempc]==false){queue.push(tempr-1);queue.push(tempc);visited[tempr-1][tempc]=true;}if(tempr<3&&grid[tempr+1][tempc]==1&&visited[tempr+1][tempc]==false){queue.push(tempr+1);queue.push(tempc);visited[tempr+1][tempc]=true;}if(tempc>0&&grid[tempr][tempc-1]==1&&visited[tempr][tempc-1]==false){queue.push(tempr);queue.push(tempc-1);visited[tempr][tempc-1]=true;}if(tempc<11&&grid[tempr][tempc+1]==1&&visited[tempr][tempc+1]==false){queue.push(tempr);queue.push(tempc+1);visited[tempr][tempc+1]=true;}/*this cycle will keep exploring stack in dfs/bfs first manner until all connected marked as visited*/}//increment count of objectscount++;}intmain(){//mimick input matrixstd::vector<int>row0{0,0,0,1,1,0,0,0,1,0,1,0};std::vector<int>row1{1,1,1,0,1,1,1,1,0,0,0,1};std::vector<int>row2{1,1,1,0,1,0,0,1,0,0,1,0};std::vector<int>row3{1,0,0,0,0,0,0,0,0,1,0,0};std::vector<std::vector<int>>grid;//establish single gridgrid.push_back(row0);grid.push_back(row1);grid.push_back(row2);grid.push_back(row3);//establish visited gridstd::vector<std::vector<bool>>visited(4,std::vector<bool>(12,false));//establish base count of objects(all connected groups of 1)intcount=0;for(inti=0;i<grid.size();i++){for(intj=0;j<grid[i].size();j++){if(grid[i][j]==1&&visited[i][j]==false){expandnode(grid,visited,i,j,count);}}}std::cout<<count;}
Cookie support is required to access HackerRank
Seems like cookies are disabled on this browser, please enable them to open this website
Image Segmentation #1
You are viewing a single comment's thread. Return to all comments →