11 • 3个月前
#include <iostream>
#include <queue>
#include <vector>
using namespace std;
// 定义状态结构体
struct State {
int index; // 当前处理的苹果索引
int count; // 已经摘取的苹果数
};
int bfs(const vector<int>& appleHeights, int maxReachWithStool) {
queue<State> q; // 创建队列
q.push({0, 0}); // 初始状态:从第0个苹果开始,摘取数量为0
int maxApples = 0;
while (!q.empty()) {
State current = q.front(); // 取出队首元素
q.pop();
// 如果已经处理完所有苹果,更新最大摘取数量
if (current.index == 10) {
if (current.count > maxApples) {
maxApples = current.count;
}
continue;
}
// 不摘取当前苹果,扩展下一个状态
q.push({current.index + 1, current.count});
// 如果可以摘取当前苹果,扩展下一个状态
if (appleHeights[current.index] <= maxReachWithStool) {
q.push({current.index + 1, current.count + 1});
}
}
return maxApples; // 返回能够摘到的最大苹果数
}
int main() {
vector<int> appleHeights(10);
int maxReachHeight;
// 读取10个苹果的高度
for (int i = 0; i < 10; i++) {
cin >> appleHeights[i];
}
// 读取陶陶的伸手高度
cin >> maxReachHeight;
// 计算能够达到的最大高度
int maxReachWithStool = maxReachHeight + 30;
// 执行BFS搜索
int result = bfs(appleHeights, maxReachWithStool);
// 输出最终结果
cout << result << endl;
return 0;
}
评论:
请先登录,才能进行评论