二分查找(Binary Search)和二分答案(Binary Answer)是两种不同的算法设计方法,它们都有助于解决同一问题。下面是使用C++语言编写的二分查找和二分答案模板。
二分查找(Binary Search):
```cpp
#include <iostream>
int main() {
// 初始化变量
int n, i;
int key;
// 读取输入
std::cin >> n >> key;
// 初始化左右边界
int left = 1, right = n;
// 二分查找
while (left <= right) {
// 计算中间位置
i = (left + right) / 2;
// 判断中间位置是否为要查找的关键字
if (i == key) {
// 查找成功
std::cout << "Find the key!" << std::endl;
break;
} else if (i < key) {
// 中间位置小于要查找的关键字
left = i + 1;
} else {
// 中间位置大于要查找的关键字
right = i - 1;
}
}
else {
// 查找失败
std::cout << "Key not found!" << std::endl;
}
return 0;
}
```
二分答案(Binary Answer):
```cpp
#include <iostream>
int main() {
// 初始化变量
int n, i;
double key;
// 读取输入
std::cin >> n >> key;
// 初始化左右边界
double left = 1, right = n;
// 二分答案
while (left <= right) {
// 计算中间位置
i = (left + right) / 2;
// 判断中间位置是否为要查找的关键字
if (i == key) {
// 查找成功
std::cout << "Find the key!" << std::endl;
break;
} else if (i < key) {
// 中间位置小于要查找的关键字
left = i + 1;
} else {
// 中间位置大于要查找的关键字
right = i - 1;
}
}
else {
// 查找失败
std::cout << "Key not found!" << std::endl;
}
return 0;
}
```
这些模板分别展示了如何使用二分查找和二分答案解决同一个问题。在这个问题中,我们需要找到1到n之间满足某个条件的整数。二分查找通过循环遍历1到n之间的所有整数并使用二分查找来找到满足条件的整数,而二分答案通过递归调用自身来找到满足条件的整数。两种方法都可以正确地找到1到n之间满足条件的整数。