From 8a3d4f0e088bf3bcaea8b567b841da447b2da571 Mon Sep 17 00:00:00 2001 From: huihut Date: Sun, 11 Feb 2018 01:08:43 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E6=9F=A5=E6=89=BE=E7=AE=97?= =?UTF-8?q?=E6=B3=95=E5=92=8CSingleProblem?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Algorithm/BruteForceStringMatch.h | 14 ++ Algorithm/FileSearch/README.md | 20 ++ Algorithm/FileSearch/input.txt | 5 + Algorithm/FileSearch/search.cpp | 105 ++++++++++ Algorithm/FileSort/README.md | 24 +++ Algorithm/FileSort/input.txt | 1 + Algorithm/FileSort/output.txt | 1 + Algorithm/FileSort/sort.cpp | 194 ++++++++++++++++++ Algorithm/SequentialSearch.h | 9 + .../ChessboardCoverage.cpp | 160 +++++++++++++++ .../ChessboardCoverage.exe | Bin 0 -> 51712 bytes Problems/ChessboardCoverageProblem/README.md | 24 +++ Problems/KnapsackProblem/README.md | 34 +++ Problems/KnapsackProblem/pack.cpp | 165 +++++++++++++++ Problems/KnapsackProblem/pack.exe | Bin 0 -> 53760 bytes .../Formula/Neumann2_3_12.cpp | 33 +++ .../Formula/Neumann2_3_12.exe | Bin 0 -> 37888 bytes .../NeumannNeighborProblem/Formula/README.md | 38 ++++ Problems/NeumannNeighborProblem/README.md | 13 ++ .../Recursive/Neumann2_4_12.cpp | 36 ++++ .../Recursive/Neumann2_4_12.exe | Bin 0 -> 37888 bytes .../Recursive/README.md | 38 ++++ Problems/RoundRobinProblem/MatchTable.cpp | 102 +++++++++ Problems/RoundRobinProblem/MatchTable.exe | Bin 0 -> 51712 bytes Problems/RoundRobinProblem/README.md | 31 +++ Problems/TubingProblem/README.md | 31 +++ Problems/TubingProblem/Tubing.cpp | 116 +++++++++++ Problems/TubingProblem/Tubing.exe | Bin 0 -> 58880 bytes README.md | 18 ++ 29 files changed, 1212 insertions(+) create mode 100644 Algorithm/BruteForceStringMatch.h create mode 100644 Algorithm/FileSearch/README.md create mode 100644 Algorithm/FileSearch/input.txt create mode 100644 Algorithm/FileSearch/search.cpp create mode 100644 Algorithm/FileSort/README.md create mode 100644 Algorithm/FileSort/input.txt create mode 100644 Algorithm/FileSort/output.txt create mode 100644 Algorithm/FileSort/sort.cpp create mode 100644 Algorithm/SequentialSearch.h create mode 100644 Problems/ChessboardCoverageProblem/ChessboardCoverage.cpp create mode 100644 Problems/ChessboardCoverageProblem/ChessboardCoverage.exe create mode 100644 Problems/ChessboardCoverageProblem/README.md create mode 100644 Problems/KnapsackProblem/README.md create mode 100644 Problems/KnapsackProblem/pack.cpp create mode 100644 Problems/KnapsackProblem/pack.exe create mode 100644 Problems/NeumannNeighborProblem/Formula/Neumann2_3_12.cpp create mode 100644 Problems/NeumannNeighborProblem/Formula/Neumann2_3_12.exe create mode 100644 Problems/NeumannNeighborProblem/Formula/README.md create mode 100644 Problems/NeumannNeighborProblem/README.md create mode 100644 Problems/NeumannNeighborProblem/Recursive/Neumann2_4_12.cpp create mode 100644 Problems/NeumannNeighborProblem/Recursive/Neumann2_4_12.exe create mode 100644 Problems/NeumannNeighborProblem/Recursive/README.md create mode 100644 Problems/RoundRobinProblem/MatchTable.cpp create mode 100644 Problems/RoundRobinProblem/MatchTable.exe create mode 100644 Problems/RoundRobinProblem/README.md create mode 100644 Problems/TubingProblem/README.md create mode 100644 Problems/TubingProblem/Tubing.cpp create mode 100644 Problems/TubingProblem/Tubing.exe diff --git a/Algorithm/BruteForceStringMatch.h b/Algorithm/BruteForceStringMatch.h new file mode 100644 index 0000000..5354509 --- /dev/null +++ b/Algorithm/BruteForceStringMatch.h @@ -0,0 +1,14 @@ +// 蛮力字符串匹配 +int BruteForceStringMatch(vector& Total, vector& Part) +{ + int i, j; + for (i = 0; i < Total.size() - Part.size(); ++i) { + j = 0; + while (j < Part.size() && Part[j] == Total[i + j]) { + ++j; + if (j == Part.size()) + return i; + } + } + return -1; +} \ No newline at end of file diff --git a/Algorithm/FileSearch/README.md b/Algorithm/FileSearch/README.md new file mode 100644 index 0000000..c150b8a --- /dev/null +++ b/Algorithm/FileSearch/README.md @@ -0,0 +1,20 @@ + +## 文件(文本)查找 + +### 代码 + +[文件(文本)查找代码](search.cpp) + +### 功能说明 + +本程序实现对英文文本中关键字的查找 + +返回关键字出现的位置(第几个词) + +### 代码简述 + +从`output.txt`文件读入数据(英文文本)到 `vector` 中存储 + +通过用户输入关键字(`keyword`)进行查找 + +输出查找到的关键字出现的位置(第几个词) \ No newline at end of file diff --git a/Algorithm/FileSearch/input.txt b/Algorithm/FileSearch/input.txt new file mode 100644 index 0000000..2c103a3 --- /dev/null +++ b/Algorithm/FileSearch/input.txt @@ -0,0 +1,5 @@ +Just arrived in Kathmandu tonight and needed to eat, +we checked Trip advisor and came here because it was close to hotel. +Certainly deserves its number 1 rating. +Food is so tasty and the atmosphere is very relaxed. +I would definitely recommend. \ No newline at end of file diff --git a/Algorithm/FileSearch/search.cpp b/Algorithm/FileSearch/search.cpp new file mode 100644 index 0000000..19e2e74 --- /dev/null +++ b/Algorithm/FileSearch/search.cpp @@ -0,0 +1,105 @@ +#include +#include +#include +#include + +using namespace std; + +#define OK 0 +#define ERROR -1 +#define INPUTNAME "input.txt" + +// 查找 +int search(vector& v_data, string keyword) { + int i = 0; + + // 遍历每个元素直到找到关键字 + for (; i < v_data.size(); i++) { + + // 比较关键字与每个词是否相等 + if (0 == v_data[i].compare(keyword)){ + + // 相等则返回关键字的位序 + return i; + } + } + return ERROR; +} + + +// 文件读取 +int FileRead(vector& v_data) { + + ifstream f_in(INPUTNAME); + + //判断读取失败 + if (!f_in) { + cout << "文件读取失败!" << endl; + system("pause"); + return ERROR; + } + + string word; + + // 文件逐个读取 + while (!f_in.eof()) { + f_in >> word; + v_data.push_back(word); + } + + // 关闭文件 + f_in.close(); + + return OK; +} + +// 界面 +void Interface(string& keyword) { + cout << "-------------------- 文件查找 --------------------" << endl; + cout << "【说明】:本程序实现对文件内容的查找" << endl; + cout << "即从input.txt读入,查找关键字的首次出现位置" << endl; + cout << "--------------------------------------------------" << endl; + cout << "请输入关键字:" << endl; + cout << "--------------------------------------------------" << endl; + cin >> keyword; + cout << "--------------------------------------------------" << endl; +} + +int main() { + + vector v_data; + + // 文件读取 + if (ERROR == FileRead(v_data)) + return ERROR; + + int index = -1; + string keyword; + + // 界面 + Interface(keyword); + + // 合法性检测 + if (keyword.empty()) { + cout << "请输入合法的关键字!" << endl; + system("pause"); + return ERROR; + } + + // 查找 + index = search(v_data, keyword); + + //未找到输出 + if (ERROR == index) { + cout << "未找到此关键字!" << endl; + system("pause"); + return ERROR; + } + + //输出找到的关键字索引 + cout << "此关键字位于第 " << index + 1 << " 个词的位置!" << endl; + + system("pause"); + + return OK; +} diff --git a/Algorithm/FileSort/README.md b/Algorithm/FileSort/README.md new file mode 100644 index 0000000..2704e10 --- /dev/null +++ b/Algorithm/FileSort/README.md @@ -0,0 +1,24 @@ + +## 文件(文本)排序 + +### 代码 + +[文件(文本)排序代码](sort.cpp) + +### 功能说明 + +本程序实现选择排序和冒泡排序两个排序算法 + +并且有从小到大和从大到小两种排序方式 + +用户可进行选择需要的方式 + +### 代码简述 + +从 `output.txt` 文件读入数据(数字)到 `vector` 中存储 + +通过用户输入的排序算法(`i_algorithm`)和排序方式(`i_mode`) + +选择对于的选择排序(`SelectSort()`)或者冒泡排序(`BubbleSort()`)进行排序 + +排序后输出 `vector` 到 `output.txt` \ No newline at end of file diff --git a/Algorithm/FileSort/input.txt b/Algorithm/FileSort/input.txt new file mode 100644 index 0000000..343ab36 --- /dev/null +++ b/Algorithm/FileSort/input.txt @@ -0,0 +1 @@ +33 22 66 99 11 68 39 89 107 749 20 6 \ No newline at end of file diff --git a/Algorithm/FileSort/output.txt b/Algorithm/FileSort/output.txt new file mode 100644 index 0000000..a136e47 --- /dev/null +++ b/Algorithm/FileSort/output.txt @@ -0,0 +1 @@ +6 11 20 22 33 39 66 68 89 99 107 749 \ No newline at end of file diff --git a/Algorithm/FileSort/sort.cpp b/Algorithm/FileSort/sort.cpp new file mode 100644 index 0000000..94beeca --- /dev/null +++ b/Algorithm/FileSort/sort.cpp @@ -0,0 +1,194 @@ +#include +#include +#include + +using namespace std; + +#define OK 0 +#define ERROR -1 +#define INPUTNAME "input.txt" +#define OUTPUTNAME "output.txt" + +// 选择排序 +int SelectSort(vector& v_data, int b_mode) { + + size_t i_num = v_data.size(), temp = 0; + + // 从小到大排 + if (0 == b_mode) { + size_t min; + for (size_t i = 0; i < i_num - 1; i++) { + min = i; + for (size_t j = i + 1; j < i_num; j++) + if (v_data[min] > v_data[j]) + min = j; + if (min != i) { + temp = v_data[min]; + v_data[min] = v_data[i]; + v_data[i] = temp; + } + } + } + + // 从大到小排 + else { + size_t max; + for (size_t i = 0; i < i_num - 1; i++) { + max = i; + for (size_t j = i + 1; j < i_num; j++) + if (v_data[max] < v_data[j]) + max = j; + if (max != i) { + temp = v_data[max]; + v_data[max] = v_data[i]; + v_data[i] = temp; + } + } + } + + return OK; +} + +// 冒泡排序 +int BubbleSort(vector& v_data, int b_mode) { + + size_t num = v_data.size(), temp = 0; + + // 从小到大排 + if (0 == b_mode) { + for (size_t i = 0; i < num - 1; i++) { + for (size_t j = 0; j < num - i - 1; j++) { + if (v_data[j] > v_data[j + 1]) { + temp = v_data[j]; + v_data[j] = v_data[j + 1]; + v_data[j + 1] = temp; + } + } + } + } + + // 从大到小排 + else { + for (size_t i = 0; i < num - 1; i++) { + for (size_t j = 0; j < num - i - 1; j++) { + if (v_data[j] < v_data[j + 1]) { + temp = v_data[j]; + v_data[j] = v_data[j + 1]; + v_data[j + 1] = temp; + } + } + } + } + + return OK; +} + +// 文件读取 +int FileRead(vector& v_data) { + + ifstream f_in(INPUTNAME); + + //判断读取失败 + if (!f_in) { + cout << "文件读取失败!" << endl; + system("pause"); + return ERROR; + } + + int i_temp; + + // 文件逐个读取 + while (!f_in.eof()) { + f_in >> i_temp; + v_data.push_back(i_temp); + } + + // 关闭文件 + f_in.close(); + + return OK; +} + +// 文件写入 +int FileWrite(vector& v_data) { + + ofstream f_out(OUTPUTNAME); + + // 判断读取失败 + if (!f_out) { + cout << "文件写入失败!" << endl; + return ERROR; + } + + // 文件逐个写入 + for (int i = 0; i < v_data.size(); i++) + f_out << v_data[i] << " "; + + f_out.close(); + return OK; +} + +// 界面 +void Interface(int& i_algorithm, int& i_mode) { + cout << "-------------------- 文件排序 --------------------" << endl; + cout << "【说明】:本程序实现对文件内容的排序" << endl; + cout << "即从input.txt读入,排序后写入到output.txt" << endl; + cout << "--------------------------------------------------" << endl; + cout << "请选择排序算法:" << endl; + cout << "【0】选择排序" << endl; + cout << "【1】冒泡排序" << endl; + cout << "--------------------------------------------------" << endl; + cin >> i_algorithm; + cout << "--------------------------------------------------" << endl; + cout << "请选择排序方式:" << endl; + cout << "【0】从小到大" << endl; + cout << "【1】从大到小" << endl; + cout << "--------------------------------------------------" << endl; + cin >> i_mode; + cout << "--------------------------------------------------" << endl; +} + +int main() { + + vector v_data; + + // 文件读取 + if (ERROR == FileRead(v_data)) + return ERROR; + + int i_algorithm, i_mode; + + // 界面 + Interface(i_algorithm, i_mode); + + // 排序算法选择检测 + if (0 != i_algorithm && 1 != i_algorithm) { + cout << "排序算法选择错误!" << endl; + system("pause"); + return ERROR; + } + + // 排序方式选择检测 + if (0 != i_mode && 1 != i_mode) { + cout << "排序方式选择错误!" << endl; + system("pause"); + return ERROR; + } + + // 排序 + if (i_algorithm) + BubbleSort(v_data, i_mode); + else + SelectSort(v_data, i_mode); + + // 文件写入 + if (ERROR == FileWrite(v_data)) + return ERROR; + + cout << "排序完成,数据已写入:" << OUTPUTNAME << endl; + cout << "--------------------------------------------------" << endl; + + system("pause"); + + return OK; +} diff --git a/Algorithm/SequentialSearch.h b/Algorithm/SequentialSearch.h new file mode 100644 index 0000000..bef7ced --- /dev/null +++ b/Algorithm/SequentialSearch.h @@ -0,0 +1,9 @@ +// 顺序查找 +int SequentialSearch(vector& v, int k) { + int i = 0; + for (; i < v.size(); ++i) + if (v[i] == k) + return i; + if (i == v.size()) + return -1; +} \ No newline at end of file diff --git a/Problems/ChessboardCoverageProblem/ChessboardCoverage.cpp b/Problems/ChessboardCoverageProblem/ChessboardCoverage.cpp new file mode 100644 index 0000000..57cf1bd --- /dev/null +++ b/Problems/ChessboardCoverageProblem/ChessboardCoverage.cpp @@ -0,0 +1,160 @@ +#include +#include +#include + +using namespace std; + +int num_Now = 0; // 记录L型骨牌编号 +int **board = NULL; // 棋盘指针 + + // 函数声明 +void ChessBoard(int num_BoardTopLeftRow, int num_BoardTopLeftColumn, int num_SpecialRow, int num_SpecialColumn, int boardSize); + +int main() { + + int num_BoardTopLeftRow = 0, // 棋盘左上角的行号 + num_BoardTopLeftColumn = 0, // 棋盘左上角的列号 + num_SpecialRow = 0, // 特殊方格所在的行号 + num_SpecialColumn = 0, // 特殊方格所在的列号 + boardSize = 0, // 棋盘大小 + k = 0; // 构成的(2^k)*(2^k)个方格的棋盘 + + // 用户界面 + cout << "---------------- 棋盘覆盖问题 ----------------" << endl; + cout << "请输入k(k>=0),构成(2^k)*(2^k)个方格的棋盘" << endl; + + // 输入k值 + cin >> k; + + // 判断输入数据合法性,包括检查输入是否为数字,k值是否大于0 + if (cin.fail() || k < 0) + { + cout << "输入k错误!" << endl; + system("pause"); + return 0; + } + + // 计算棋盘大小 + boardSize = pow(2, k); + + cout << "请输入特殊方格所在的行号和列号(从0开始,用空格隔开)" << endl; + + // 输入特殊方格所在的行号和列号 + cin >> num_SpecialRow >> num_SpecialColumn; + + // 判断输入数据合法性,包括检查输入是否为数字,特殊方格行号列号是否大于0,特殊方格行号列号是否不大于棋盘大小 + if (cin.fail() || num_SpecialRow < 0 || num_SpecialColumn < 0 || num_SpecialRow >= boardSize || num_SpecialColumn >= boardSize) + { + cout << "输入行号或列号错误!" << endl; + system("pause"); + return 0; + } + + // 分配棋盘空间 + board = new int *[boardSize]; + for (auto i = 0; i < boardSize; i++) + { + board[i] = new int[boardSize]; + } + + // 为特殊方格赋初值0 + board[num_SpecialRow][num_SpecialColumn] = 0; + + //执行棋盘覆盖函数 + ChessBoard(num_BoardTopLeftRow, num_BoardTopLeftColumn, num_SpecialRow, num_SpecialColumn, boardSize); + + // 显示输出 + cout << "------------------------------------------------" << endl; + for (auto i = 0; i < boardSize; i++) + { + for (auto j = 0; j < boardSize; j++) + { + cout << board[i][j] << "\t"; + } + cout << endl; + } + cout << "------------------------------------------------" << endl; + + // 暂停查看结果 + system("pause"); + + // 释放内存 + for (int i = 0; i <= boardSize; i++) + delete[] board[i]; + delete[] board; + + // 指针置空 + board = NULL; + + return 0; +} + +// 棋盘覆盖函数 +void ChessBoard(int num_BoardTopLeftRow, int num_BoardTopLeftColumn, int num_SpecialRow, int num_SpecialColumn, int boardSize) +{ + // 棋盘大小为1则直接返回 + if (boardSize == 1) return; + + int num = ++num_Now, // L型骨牌编号 + size = boardSize / 2; // 分割棋盘,行列各一分为二 + + // 覆盖左上角子棋盘 + if (num_SpecialRow < num_BoardTopLeftRow + size && num_SpecialColumn < num_BoardTopLeftColumn + size) + { + // 递归覆盖含有特殊方格的子棋盘 + ChessBoard(num_BoardTopLeftRow, num_BoardTopLeftColumn, num_SpecialRow, num_SpecialColumn, size); + } + else + { + // 用编号为num的L型骨牌覆盖右下角 + board[num_BoardTopLeftRow + size - 1][num_BoardTopLeftColumn + size - 1] = num; + + // 递归覆盖其余棋盘 + ChessBoard(num_BoardTopLeftRow, num_BoardTopLeftColumn, num_BoardTopLeftRow + size - 1, num_BoardTopLeftColumn + size - 1, size); + } + + // 覆盖右上角子棋盘 + if (num_SpecialRow < num_BoardTopLeftRow + size && num_SpecialColumn >= num_BoardTopLeftColumn + size) + { + // 递归覆盖含有特殊方格的子棋盘 + ChessBoard(num_BoardTopLeftRow, num_BoardTopLeftColumn + size, num_SpecialRow, num_SpecialColumn, size); + } + else + { + // 用编号为num的L型骨牌覆盖左下角 + board[num_BoardTopLeftRow + size - 1][num_BoardTopLeftColumn + size] = num; + + // 递归覆盖其余棋盘 + ChessBoard(num_BoardTopLeftRow, num_BoardTopLeftColumn + size, num_BoardTopLeftRow + size - 1, num_BoardTopLeftColumn + size, size); + } + + // 覆盖左下角子棋盘 + if (num_SpecialRow >= num_BoardTopLeftRow + size && num_SpecialColumn < num_BoardTopLeftColumn + size) + { + // 递归覆盖含有特殊方格的子棋盘 + ChessBoard(num_BoardTopLeftRow + size, num_BoardTopLeftColumn, num_SpecialRow, num_SpecialColumn, size); + } + else + { + // 用编号为num的L型骨牌覆盖右上角 + board[num_BoardTopLeftRow + size][num_BoardTopLeftColumn + size - 1] = num; + + // 递归覆盖其余棋盘 + ChessBoard(num_BoardTopLeftRow + size, num_BoardTopLeftColumn, num_BoardTopLeftRow + size, num_BoardTopLeftColumn + size - 1, size); + } + + // 覆盖右下角子棋盘 + if (num_SpecialRow >= num_BoardTopLeftRow + size && num_SpecialColumn >= num_BoardTopLeftColumn + size) + { + // 递归覆盖含有特殊方格的子棋盘 + ChessBoard(num_BoardTopLeftRow + size, num_BoardTopLeftColumn + size, num_SpecialRow, num_SpecialColumn, size); + } + else + { + // 用编号为num的L型骨牌覆盖左上角 + board[num_BoardTopLeftRow + size][num_BoardTopLeftColumn + size] = num; + + // 递归覆盖其余棋盘 + ChessBoard(num_BoardTopLeftRow + size, num_BoardTopLeftColumn + size, num_BoardTopLeftRow + size, num_BoardTopLeftColumn + size, size); + } +} diff --git a/Problems/ChessboardCoverageProblem/ChessboardCoverage.exe b/Problems/ChessboardCoverageProblem/ChessboardCoverage.exe new file mode 100644 index 0000000000000000000000000000000000000000..0ebc7c2d9664e1720fe1290a25eb673a47b46d41 GIT binary patch literal 51712 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 F{|AF#-RS@T literal 0 HcmV?d00001 diff --git a/Problems/ChessboardCoverageProblem/README.md b/Problems/ChessboardCoverageProblem/README.md new file mode 100644 index 0000000..01d6755 --- /dev/null +++ b/Problems/ChessboardCoverageProblem/README.md @@ -0,0 +1,24 @@ + +## 棋盘覆盖问题 + +### 代码 + +[棋盘覆盖问题代码](ChessboardCoverage.cpp) + +### 问题说明 + +在一个2^k * 2^k个方格组成的棋盘中,恰有一个方格与其它方格不同,称该方格为一特殊方格。 + +棋盘覆盖问题就是要用图示的4种不同形态的L型骨牌覆盖给定棋盘上除特殊方格之外的所有方格,且任何2个L型骨牌不得重叠覆盖。 + +![](http://blog.chinaunix.net/attachment/201303/1/26548237_1362125215RWwI.png) + +### 功能说明 + +本程序用分治法的思想解决了棋盘覆盖问题,显示输出 + +### 代码简述 + +用户输入数据,程序输入检测,动态分配空间,调用棋盘覆盖函数,把计算结果存储到board(二维数组指针),显示输出。 + +其中棋盘覆盖函数用分治的思想把棋盘分成四份,递归求解。 \ No newline at end of file diff --git a/Problems/KnapsackProblem/README.md b/Problems/KnapsackProblem/README.md new file mode 100644 index 0000000..08ef1df --- /dev/null +++ b/Problems/KnapsackProblem/README.md @@ -0,0 +1,34 @@ + +## 背包问题 + +### 代码 + +[背包问题代码](pack.cpp) + +### 问题说明 + +有N件物品和一个容量为V的背包。 + +第i件物品的重量是w[i],价值是v[i]。 + +求解将哪些物品装入背包可使这些物品的重量总和不超过背包容量, + +且价值总和最大。 + +### 功能说明 + +本程序用动态规划的思想解决了背包问题,并用了两种算法: +迭代法、递归法。在迭代法中实现了打印背包问题的表格。 + +### 代码简述 + +通过用户输入数据,程序输入检测,动态分配空间,选择算法, +用动态规划的思想求解背包问题。 + +#### 迭代法: +通过遍历n行W列,迭代每行每列的值,并把最优解放到 +n行(在数组中为第n+1行)W列(在数组中为第W+1列)中。 + +#### 递归法: +通过每次返回前i个物品和承重为j的最优解, +递归计算总背包问题的最优解。 diff --git a/Problems/KnapsackProblem/pack.cpp b/Problems/KnapsackProblem/pack.cpp new file mode 100644 index 0000000..7404516 --- /dev/null +++ b/Problems/KnapsackProblem/pack.cpp @@ -0,0 +1,165 @@ +#include +#include +using namespace std; + +int *w = NULL; // 存储每件物品重量的数组指针 +int *v = NULL; // 存储每件物品价值的数组指针 +int **T = NULL; // 存储背包问题表格的数组指针 +int n; // 物品个数n +int W; // 背包总承重W + +// 返回两个值的最大值 +int max(int a, int b) +{ + return (a > b) ? a : b; +} + +// 迭代法,能显示背包问题的表格 +void packIterative() +{ + // 循环遍历n行 + for (int i = 1; i <= n; ++i) + { + // 循环遍历W列 + for (int j = 1; j <= W; ++j) + { + //第i个物品能装下,则比较包括第i个物品和不包括第i个物品,取其最大值 + if (w[i] <= j) + T[i][j] = max(v[i] + T[i - 1][j - w[i]], T[i - 1][j]); + + // 第i个物品不能装下,则递归装i-1个 + else + T[i][j] = T[i - 1][j]; + } + } +} + +// 递归法,不支持显示背包问题的表格 +int packRecursive(int i, int j, int *w, int *v) +{ + // 结束条件(初始条件),i或者j为0时最大总价值为0 + if (i == 0 || j == 0) + return 0; + + // 第i个物品不能装下,则递归装i-1个 + if (w[i] > j) + return packRecursive(i - 1, j, w, v); + + //第i个物品能装下,则比较包括第i个物品和不包括第i个物品,取其最大值 + else + return max(v[i] + packRecursive(i - 1, j - w[i], w, v), packRecursive(i - 1, j, w, v)); +} + +// 打印背包问题的表格 +void printT(int n, int W) +{ + // 打印n行 + for (auto i = 0; i <= n; i++) + { + // 打印行数 + cout << i << ":\t"; + + // 打印W列 + for (int w = 0; w <= W; w++) + { + cout << T[i][w] << "\t"; + } + + // 换行 + cout << endl; + } +} + +int main() +{ + + cout << "---------------- 背包问题 ----------------" << endl; + cout << "请输入物品数 n (n>=0) " << endl; + + // 输入背包数 + cin >> n; + + if (cin.fail() || n < 0) + { + cout << "输入n错误!" << endl; + system("pause"); + return 0; + } + + cout << "请输入背包承重量 W (W>=0) " << endl; + + // 输入背包承重量 + cin >> W; + + if (cin.fail() || W < 0) + { + cout << "输入W错误!" << endl; + system("pause"); + return 0; + } + + // 分配空间 + // 对w和v分配n+1大小 + w = new int[n+1]; + v = new int[n+1]; + + // 对T分配n+1行,并初始化为0 + T = new int *[n + 1](); + // 对T分配W+1列,并初始化为0 + for (auto i = 0; i <= n; i++) + { + T[i] = new int[W + 1](); + } + + // 输入背包的重量和价值 + for (auto i = 1; i <= n; i++) + { + cout << "请输入第 " << i << " 个背包的重量和价值(用空格隔开)" << endl; + cin >> w[i] >> v[i]; + if (cin.fail() || w[i] < 0 || v[i] < 0) + { + cout << "输入错误!" << endl; + system("pause"); + return 0; + } + } + + cout << "------------------------------------------------" << endl; + cout << "请选择算法:" << endl; + cout << "【1】迭代法" << endl; + cout << "【2】递归法" << endl; + cout << "------------------------------------------------" << endl; + + int choose; + + // 输入算法的选择 + cin >> choose; + switch (choose) + { + case 1: + { + // 迭代法,能显示背包问题的表格 + packIterative(); + cout << "能装下物品的最大价值为 " << T[n][W] << endl; + cout << "------------------------------------------------" << endl; + printT(n, W); + break; + } + case 2: + { + // 递归法,不支持显示背包问题的表格 + cout << "能装下物品的最大价值为 " << packRecursive(n, W, w, v) << endl; + break; + } + default: + { + cout << "输入错误!" << endl; + break; + } + } + + cout << "------------------------------------------------" << endl; + + system("pause"); + return 0; +} diff --git a/Problems/KnapsackProblem/pack.exe b/Problems/KnapsackProblem/pack.exe new file mode 100644 index 0000000000000000000000000000000000000000..88d4e994d5504f4080b333beb315603e1704657f GIT binary patch literal 53760 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 j7@!C4MyYKnaVz3B$L)!u)06ZJj!*AGS4acjm + +//通项法 +int Neumann2_3_12(int n) { + + //通项公式的求解请查看说明文档 + return 2 * n*n + 2 * n + 1; +} + +int main() { + int n = 0, a = 0; + + printf("------冯诺依曼邻居问题------\n"); + printf("已知:\n"); + printf(" 0 阶冯诺依曼邻居的元胞数为 1 \n"); + printf(" 1 阶冯诺依曼邻居的元胞数为 5 \n"); + printf(" 2 阶冯诺依曼邻居的元胞数为 13 \n"); + printf("求:\n"); + printf(" n 阶冯诺依曼邻居的元胞数\n"); + printf("----------------------------\n"); + printf("请输入n\n"); + scanf("%d", &n); + + //用通项公式求解 + a = Neumann2_3_12(n); + + printf("------------通项法-------------\n"); + printf(" %d 阶冯诺依曼邻居的元胞数为 %d\n", n, a); + + getchar(); + getchar(); + return 0; +} diff --git a/Problems/NeumannNeighborProblem/Formula/Neumann2_3_12.exe b/Problems/NeumannNeighborProblem/Formula/Neumann2_3_12.exe new file mode 100644 index 0000000000000000000000000000000000000000..6ed7dfe9539d425b018c2738f020ec5257782857 GIT binary patch literal 37888 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 literal 0 HcmV?d00001 diff --git a/Problems/NeumannNeighborProblem/Formula/README.md b/Problems/NeumannNeighborProblem/Formula/README.md new file mode 100644 index 0000000..7ac5490 --- /dev/null +++ b/Problems/NeumannNeighborProblem/Formula/README.md @@ -0,0 +1,38 @@ + +## 冯诺依曼邻居问题(通项公式) + +### 代码 + +[冯诺依曼邻居问题(通项公式)代码](Neumann2_3_12.cpp) + +### 问题说明 + +某算法从一个1×1的方格开始,每次都会在上次图形的周围再加上一圈方格,在第n次的时候要生成多少个方格?下图给出了n = 0,1,2是的结果。 + +![](http://ojlsgreog.bkt.clouddn.com/NeumannNeighborProblem.jpg) + +### 功能说明 + +本程序使用通项公式求解。 + +### 代码简述 + +若设第n次生成的方格数是a(n),则: + +a(1) = a(0) + 4 * 1 +a(2) = a(1) + 4 * 2 +a(3) = a(2) + 4 * 3 +... +a(n) = a(n-1) + 4 * n + +化简可得: + +a(n) - a(1) = 4 * (n + (n-1) + ... + 2 ) + +即: + +a(n) = 2 * n*n + 2 * n + 1 + +则可得出a(n)的通项公式,即可用通项公式直接求解。 + +在程序中用Neumann2_3_12函数返回a(n)的值。 \ No newline at end of file diff --git a/Problems/NeumannNeighborProblem/README.md b/Problems/NeumannNeighborProblem/README.md new file mode 100644 index 0000000..c2e76a4 --- /dev/null +++ b/Problems/NeumannNeighborProblem/README.md @@ -0,0 +1,13 @@ + +## 冯诺依曼邻居问题 + +### 问题说明 + +某算法从一个1×1的方格开始,每次都会在上次图形的周围再加上一圈方格,在第n次的时候要生成多少个方格?下图给出了n = 0,1,2是的结果。 + +![](http://ojlsgreog.bkt.clouddn.com/NeumannNeighborProblem.jpg) + +### 解法 + +* [通项公式解法](Formula) +* [递推关系解法](Recursive) \ No newline at end of file diff --git a/Problems/NeumannNeighborProblem/Recursive/Neumann2_4_12.cpp b/Problems/NeumannNeighborProblem/Recursive/Neumann2_4_12.cpp new file mode 100644 index 0000000..77b2a92 --- /dev/null +++ b/Problems/NeumannNeighborProblem/Recursive/Neumann2_4_12.cpp @@ -0,0 +1,36 @@ +#include + +//递归法 +int Neumann2_4_12(int n) { + + //由图可知第0次有1个方格 + if (n == 0) return 1; + + //递推关系的求解请查看说明文档 + return Neumann2_4_12(n - 1) + 4 * n; +} + +int main() { + int n = 0, a = 0; + + printf("------冯诺依曼邻居问题------\n"); + printf("已知:\n"); + printf(" 0 阶冯诺依曼邻居的元胞数为 1 \n"); + printf(" 1 阶冯诺依曼邻居的元胞数为 5 \n"); + printf(" 2 阶冯诺依曼邻居的元胞数为 13 \n"); + printf("求:\n"); + printf(" n 阶冯诺依曼邻居的元胞数\n"); + printf("----------------------------\n"); + printf("请输入n\n"); + scanf("%d", &n); + + //建立递推关系,使用递归求解 + a = Neumann2_4_12(n); + + printf("------------通项法-------------\n"); + printf(" %d 阶冯诺依曼邻居的元胞数为 %d\3n", n, a); + + getchar(); + getchar(); + return 0; +} diff --git a/Problems/NeumannNeighborProblem/Recursive/Neumann2_4_12.exe b/Problems/NeumannNeighborProblem/Recursive/Neumann2_4_12.exe new file mode 100644 index 0000000000000000000000000000000000000000..3f9ea26b2c505778dfb62f0dfb8c897cae12ab9f GIT binary patch literal 37888 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 +#include + +using namespace std; + +// 循环赛日程安排函数声明 +void MatchTable(int k, int n, int **table); + +int main() +{ + int n = 0, k = 0; + + // 用户界面 + cout << "---------------- 循环赛日程安排问题 ----------------" << endl; + cout << "请输入k(k>=0),构成 n=(2^k) 个选手的循环赛" << endl; + + // 输入k值 + cin >> k; + + // 判断输入数据合法性,包括检查输入是否为数字,k值是否大于0 + if (cin.fail() || k < 0) + { + cout << "输入k错误!" << endl; + system("pause"); + return 0; + } + + // 计算比赛日程表大小 + n = pow(2, k); + + // 分配日程表空间 + int **table = new int *[n + 1]; + for (int i = 0; i <= n; i++) + { + table[i] = new int[n + 1]; + } + + // 进行循环赛日程安排,生成日程表 + MatchTable(k, n, table); + + // 显示输出 + cout << "------------------------------------------------" << endl; + for (int i = 1; i <= n; i++) + { + for (int j = 1; j <= n; j++) + { + cout << table[i][j] << "\t"; + } + cout << endl; + } + cout << "------------------------------------------------" << endl; + + // 暂停查看结果 + system("pause"); + + // 释放内存 + for (int i = 0; i <= n; i++) + delete[] table[i]; + delete[] table; + + // 指针置空 + table = NULL; + + return 0; +} + +// 进行循环赛日程安排,生成日程表 +void MatchTable(int k, int n, int **table) +{ + // 设置日程表第一行的值 + for (int i = 1; i <= n; i++) + table[1][i] = i; + + // 每次填充的起始填充位置 + int begin = 1; + + // 用分治法分separate份,循环求解 + for (int separate = 1; separate <= k; separate++) + { + // 日程表进行划分 + n /= 2; + + // flag为每一小份的列的标记 + for (int flag = 1; flag <= n; flag++) + { + // 操作行 + for (int i = begin + 1; i <= 2 * begin; i++) + { + // 操作列 + for (int j = begin + 1; j <= 2 * begin; j++) + { + // 把左上角的值赋给右下角 + table[i][j + (flag - 1) * begin * 2] = table[i - begin][j + (flag - 1) * begin * 2 - begin]; + // 把右上角的值赋给左下角 + table[i][j + (flag - 1) * begin * 2 - begin] = table[i - begin][j + (flag - 1) * begin * 2]; + } + } + } + // 进入日程表的下一个划分进行填充 + begin *= 2; + } +} diff --git a/Problems/RoundRobinProblem/MatchTable.exe b/Problems/RoundRobinProblem/MatchTable.exe new file mode 100644 index 0000000000000000000000000000000000000000..3cc47853aa9b034e91ad5605f47d805b4d227edd GIT binary patch literal 51712 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 W&jP~u`zk)03SA)$gfws(4g5c{*kcy} literal 0 HcmV?d00001 diff --git a/Problems/RoundRobinProblem/README.md b/Problems/RoundRobinProblem/README.md new file mode 100644 index 0000000..af58486 --- /dev/null +++ b/Problems/RoundRobinProblem/README.md @@ -0,0 +1,31 @@ + +## 循环赛日程安排问题 + +### 代码 + +[循环赛日程安排问题代码](MatchTable.cpp) + +### 问题说明 + +设有n=2k个选手要进行网球循环赛, +要求设计一个满足以下要求的比赛日程表: + +(1)每个选手必须与其他n-1个选手各赛一次; +(2)每个选手一天只能赛一次。 + +按此要求,可将比赛日程表设计成一个 n 行n-1列的二维表, +其中,第 i 行第 j 列表示和第 i 个选手在第 j 天比赛的选手。 + +### 功能说明 + +本程序运用分治的思想,实现了循环赛日程安排问题的求解, +生成日程表,输出。 + +### 代码简述 + +通过用户输入数据,程序输入检测,动态分配空间, +调用生成日程表函数,显示输出。 + +其中,生成日程表函数运用分治的思想,分成separate份, +先安排第一行(第一份),然后每一份填充,最终求解完毕, +生成日程表。 \ No newline at end of file diff --git a/Problems/TubingProblem/README.md b/Problems/TubingProblem/README.md new file mode 100644 index 0000000..0828556 --- /dev/null +++ b/Problems/TubingProblem/README.md @@ -0,0 +1,31 @@ + +## 输油管道问题 + +### 代码 + +[输油管道问题代码](Tubing.cpp) + +### 问题说明 + +某石油公司计划建造一条由东向西的主输油管道。 +该管道要穿过一个有n 口油井的油田。 +从每口油井都要有一条输油管道沿最短路经(或南或北)与主管道相连。 +如果给定n口油井的位置,即它们的x 坐标(东西向)和y 坐标(南北向), +应如何确定主管道的最优位置, +即使各油井到主管道之间的输油管道长度总和最小的位置? + +### 功能说明 + +本程序用排序求中值的方法求解输油管道问题。 + +### 代码简述 + +通过用户输入数据(只输入油井数n、每个油井的y坐标), +程序输入检测,动态分配空间,排序(使用快速排序), +求出中间值,输出。 + +输出有以下两种情况: + +1. 当n为奇数,则最优位置为y数组的第n/2个油井的y坐标 + +2. 当n为偶数,则最优位置为y数组的中间两个油井的y坐标的区间 \ No newline at end of file diff --git a/Problems/TubingProblem/Tubing.cpp b/Problems/TubingProblem/Tubing.cpp new file mode 100644 index 0000000..59f4e02 --- /dev/null +++ b/Problems/TubingProblem/Tubing.cpp @@ -0,0 +1,116 @@ +#include +using namespace std; + +// 油井y坐标指针 +float * y = NULL; + +// 快速排序 +void quick_sort(int low, int high) +{ + if (low >= high) // 结束标志 + return; + int first = low; // 低位下标 + int last = high; // 高位下标 + float key = y[first]; // 设第一个为基准 + + while (first < last) + { + // 将比第一个小的移到前面 + while (first < last && y[last] >= key) + last--; + if (first < last) + y[first++] = y[last]; + + // 将比第一个大的移到后面 + while (first < last && y[first] <= key) + first++; + if (first < last) + y[last--] = y[first]; + } + // 基准置位 + y[first] = key; + // 前半递归 + quick_sort(low, first - 1); + // 后半递归 + quick_sort(first + 1, high); +} + +int main() +{ + int n; // 油井数 + float mid; // y数组的中间位置的数 + float minDistance = 0; // 各油井到主管道之间的管道长度总和最小位置 + + cout << "---------------- 输油管问题 ----------------" << endl; + cout << "请输入油井数 n (n>=0) " << endl; + + // 输入油井数 + cin >> n; + + // 判断输入数据合法性,包括检查输入是否为数字,k值是否大于0 + if (cin.fail() || n < 0) + { + cout << "输入n错误!" << endl; + system("pause"); + return 0; + } + + // 分配n个y坐标存储空间 + y = new float[n]; + + cout << "请输入 " << n << " 个油井的 y 坐标(用空格隔开)" << endl; + + // 输入油井的 y 坐标 + for (auto i = 0; i < n; i++) + { + cin >> y[i]; + } + + // 判断输入数据合法性 + if (cin.fail()) + { + cout << "输入y坐标错误!" << endl; + system("pause"); + return 0; + } + + // 运用快速排序对y坐标数组进行排序 + quick_sort(0, n - 1); + + // 计算y数组的中间位置的数 + mid = y[n / 2]; + + // 计算各个油井到主输油管的长度之和 + for (auto i = 0; i < n; i++) + { + minDistance += abs(y[i] - mid); + } + + // 显示输出 + cout << "------------------------------------------------" << endl; + // 判断油井奇偶,做不同的输出 + if (n & 1) + { + // n为奇数,则最优位置为y数组的第n/2个油井的y坐标 + cout << "主管道的最优位置为:y = " << mid << endl; + } + else + { + // n为偶数,则最优位置为y数组的中间两个油井的y坐标的区间 + cout << "主管道的最优位置为:y = [" << y[n / 2 - 1] << "," << mid << "]" << endl; + } + // 输出各油井到主管道之间的管道总长度 + cout << "各油井到主管道之间的管道总长度为:" << minDistance << endl; + cout << "------------------------------------------------" << endl; + + // 暂停查看结果 + system("pause"); + + // 释放内存 + delete[] y; + + // 指针置空 + y = NULL; + + return 0; +} diff --git a/Problems/TubingProblem/Tubing.exe b/Problems/TubingProblem/Tubing.exe new file mode 100644 index 0000000000000000000000000000000000000000..64cc69a5ed6f668260f5bf227ceefee0cff24d60 GIT binary patch literal 58880 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 literal 0 HcmV?d00001 diff --git a/README.md b/README.md index f6675d9..3a1168d 100644 --- a/README.md +++ b/README.md @@ -46,10 +46,28 @@ * [冒泡排序(改进版)](Algorithm/BubbleSort_orderly.h) * [选择排序](Algorithm/SelectionSort.h) * [快速排序](Algorithm/QuickSort.h) +* [文件排序](Algorithm/FileSort) +### 查找 + +* [顺序查找](Algorithm/SequentialSearch.h) +* [蛮力字符串匹配](Algorithm/BruteForceStringMatch.h) +* [文件查找](Algorithm/FileSearch) ## Problems +### Single Problem + +* [Chessboard Coverage Problem (棋盘覆盖问题)](Problems/ChessboardCoverageProblem) + +* [Knapsack Problem (背包问题)](Problems/KnapsackProblem) + +* [Neumann Neighbor Problem (冯诺依曼邻居问题)](Problems/NeumannNeighborProblem) + +* [Round Robin Problem (循环赛日程安排问题)](Problems/RoundRobinProblem) + +* [Tubing Problem (输油管道问题)](Problems/TubingProblem) + ### Leetcode Problems #### Array