Question

import java.io.FileNotFoundException; import java.util.ArrayList; import java.util.Collections; import java.util.HashSet; public class FindWordInMaze { private char grid[][]; private...

import java.io.FileNotFoundException;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashSet;


public class FindWordInMaze {

private char grid[][];
private ArrayList<String> words;
private HashSet<String> foundWords = new HashSet<String>();

public FindWordInMaze(char[][] grid) {
this.grid = grid;
this.words = new ArrayList<>();
  
// add dictionary words
words.add("START");
words.add("NOTE");
words.add("SAND");
words.add("STONED");
  
Collections.sort(words);
}

public void findWords() {
for(int i=0; i<grid.length; i++) {
for(int j=0; j<grid[i].length; j++) {
findWordsFromLocation(i, j);
}
}
  
for(String w: foundWords) {
System.out.println(w);
}
}

private boolean isValidIndex(int i, int j, boolean visited[][]) {
return (i >= 0 && i < visited.length && j >= 0 && j < visited[i].length && !visited[i][j]);
}

private void findWordsFromLocation(int i, int j) {
boolean visited[][] = new boolean[grid.length][grid[0].length];
findWords("", i, j, visited);
}

private void findWords(String wordTillNow, int i, int j, boolean visited[][]) {
if (visited[i][j] || wordTillNow.length() > 6) {
return;
}

wordTillNow = wordTillNow + grid[i][j];
visited[i][j] = true;
  
if(words.contains(wordTillNow) && wordTillNow.length() > 1) {
foundWords.add(wordTillNow);
}
  
for (int rowOffset = -1; rowOffset < 2; rowOffset++) {

for (int colOffset = -1; colOffset < 2; colOffset++) {
if (rowOffset != 0 || colOffset != 0) {
if(isValidIndex(i + rowOffset, j + colOffset, visited)) {
findWords(wordTillNow, i+rowOffset, j + colOffset, visited);
}
}
}
}
  
visited[i][j] = false;
}

public static void main(String[] args) throws FileNotFoundException {

char grid[][] = { { 'M', 'S', 'E', 'F'}, { 'R', 'A', 'T', 'D'}, { 'L', 'O', 'N', 'E'},
{ 'K', 'A', 'F', 'B'}};
  
FindWordInMaze finder = new FindWordInMaze(grid);
finder.findWords();
}

}
can you chnage this program into c++. And can this have a better user freindly interface i am getting confused between java and c++ syntaxes.
0 0
Add a comment Improve this question Transcribed image text
Answer #1

Converted java file to C++ file

FindWordInMaze.cpp

-------------------------------------

#include<bits/stdc++.h>
#define MAX 10
using namespace std;
int row,col;
bool visited[MAX][MAX];
class FindWordInMaze
{
private:
vector<vector<char>>grid;
vector<string>words;
unordered_set<string>foundWords;
public:


FindWordInMaze(vector<vector<char>>grid)
{
this->grid = grid;
words.push_back("START");
words.push_back("NOTE");
words.push_back("SAND");
words.push_back("STONED");

sort(words.begin(),words.end());
}
bool isValidIndex(int i,int j);
void findWords(string wordTillNow, int i, int j);
void findWordsFromLocation(int i, int j);
void findWords();
};
bool FindWordInMaze::isValidIndex(int i, int j)
{
return (i>=0 && i<row && j>=0 && j<col && !visited[i][j]);
}
void FindWordInMaze::findWords(string wordTillNow, int i, int j)
{
if(visited[i][j] || wordTillNow.length()>6)
{
return;
}
wordTillNow = wordTillNow + grid[i][j];
visited[i][j] = true;

if(find(words.begin(),words.end(),wordTillNow)!=words.end() && wordTillNow.length())
{
foundWords.insert(wordTillNow);
}
for(int rowOffset = -1; rowOffset<2; rowOffset++)
{
for(int colOffset = -1; colOffset<2; colOffset++)
{
if(rowOffset!=0 || colOffset!=0)
{
if(isValidIndex(i+rowOffset,j+colOffset))
{
findWords(wordTillNow, i+rowOffset,j+colOffset);
}
}
}
}
visited[i][j] = false;
}
void FindWordInMaze::findWordsFromLocation(int i, int j)
{

findWords("",i,j);
}
void FindWordInMaze::findWords()
{
for(int i=0;i<grid.size();i++)
{
for(int j=0;j<grid[i].size();j++)
{
findWordsFromLocation(i,j);
}
}

for(string w: foundWords)
{
cout<<w<<" ";
}
}
int main()
{
vector<vector<char>>grid={ { 'M', 'S', 'E', 'F'},
{ 'R', 'A', 'T', 'D'},
{ 'L', 'O', 'N', 'E'},
{ 'K', 'A', 'F', 'B'}};
row = grid.size();
col = grid[0].size();
FindWordInMaze finder(grid);
finder.findWords();
return 0;
}

Add a comment
Know the answer?
Add Answer to:
import java.io.FileNotFoundException; import java.util.ArrayList; import java.util.Collections; import java.util.HashSet; public class FindWordInMaze { private char grid[][]; private...
Your Answer:

Post as a guest

Your Name:

What's your source?

Earn Coins

Coins can be redeemed for fabulous gifts.

Not the answer you're looking for? Ask your own homework help question. Our experts will answer your question WITHIN MINUTES for Free.
Similar Homework Help Questions
ADVERTISEMENT
Free Homework Help App
Download From Google Play
Scan Your Homework
to Get Instant Free Answers
Need Online Homework Help?
Ask a Question
Get Answers For Free
Most questions answered within 3 hours.
ADVERTISEMENT
ADVERTISEMENT
ADVERTISEMENT