用c++解决单词搜索

Using c++ to solve wordsearch.

本文关键字:搜索 单词 解决 c++      更新时间:2023-10-16

很抱歉用一个简单的问题打扰大家,但我对C++很陌生,不知道该怎么办。因此,我得到了一个C++框架,它可以读取2个txt文件,其中包含单词搜索和要查找的单词列表,并将结果显示在另一个txt文件中。我正在努力完成这个框架,但我不知道该程序将如何准确地检查所有8个方向,也不知道系统将如何将词典文件中的单词与wordsearch进行比较,并将任何匹配的单词放入results.txt文件中。我已经附上了下面的框架,任何关于如何开始的信息或建议都将不胜感激。

dictionary.txt 
ABSEIL
BIKE
PIXEL
RESIGHTS
YARDWORKS
wordsearch.txt 
S T H G I S E R B
G K L L B X D I E
K P R H I M K L D
T G Y O L E X I P
B A P T W H T E J
T Q U D X D W S F
V M V S H L R B A
H Q L B C K S A Y
R D G B F J P Q Y

Wordsearch.h 
#pragma once
#include <iostream>
#include <fstream>
#include <string>
#include <vector>
#include <Windows.h>
using namespace std;
class WordSearch
{
 public:
WordSearch();
~WordSearch();
bool ReadPuzzle();
bool ReadDictionary();
bool SolvePuzzleWithDictionary();
void WriteResults(string fileName);
private:
LARGE_INTEGER start, end, frequency;
const int NUMBER_OF_RUNS;
const string PUZZLE_NAME;
const string DICTIONARY_NAME;
};

Wordsearch.cpp 
 #include "WordSearch.h"
 #include <algorithm>
 #include <iterator>
 #include <iostream>
 #include <iomanip>
using namespace std;
WordSearch::WordSearch() : NUMBER_OF_RUNS(500), PUZZLE_NAME("wordsearch_grid.txt"), DICTIONARY_NAME("dictionary.txt")
{
}
WordSearch::~WordSearch()
{
}
bool WordSearch::ReadPuzzle()
{
cout << endl << "ReadPuzzle() has NOT been implemented" << endl;
return true;
}
bool WordSearch::ReadDictionary()
{
cout << endl << "ReadDictionary() has NOT been implemented" << endl;
return true;
}
bool WordSearch::SolvePuzzleWithDictionary() {
cout << endl << "SolvePuzzleWithDictionary() has NOT been implemented" << endl;
double timeTakenInSeconds;
QueryPerformanceFrequency(&frequency);
QueryPerformanceCounter(&start);
for (int n = 0; n < NUMBER_OF_RUNS; ++n) {
    // Add solving code here!
}
QueryPerformanceCounter(&end);
timeTakenInSeconds = (end.QuadPart - start.QuadPart) / (double)(frequency.QuadPart*NUMBER_OF_RUNS);
cout << fixed << setprecision(10) << "SolvePuzzleWithDictionary() - " << timeTakenInSeconds << " seconds" << endl;
return false;
}
void WordSearch::WriteResults(string fileName) {
cout << "WriteResults() has NOT been implemented" << endl;
}

您可能想要一个用于在所有方向上移动的索引增量数组(前提是您将字段存储在矩阵中),这样您就可以编写用于尝试所有方向的通用代码:

const int dirIncr[][2] = {{-1, 0}, {0, 1}, {1, 0}, {0, -1}/*...*/}

因此,您可以在所有可能的起始单元格中循环,并从每个销售搜索向所有可能的方向循环(在每一步中,您都必须检查当前坐标是否仍然适合您的数组)。

至于实际搜索,前缀树在这里可能会有所帮助。