烛龙战队还是要找到n个数中,最长的连续上升子序列的长度,不同的是,此时烛龙战队可以选择是否删除其中的一个数字。下面,请你编程求出在此条件限制下的,最长连续上升子序列的长度。
时间: 2023-05-25 14:05:54 浏览: 207
思路:利用动态规划求解最长连续上升子序列长度,设dp[i]表示以第i个数结尾的最长连续上升子序列长度,则有:
$$
dp[i]=\begin{cases}
1, & i=0\\
dp[i-1]+1, & a_i>a_{i-1}\\
1, & a_i\leq a_{i-1}\\
\end{cases}
$$
但是现在多了一种选择,即可以删除一个数,对于i位置的数,我们可以选择保留它或删除它,如果删除它,则dp[i]=dp[i-2]+1(因为连续上升的子序列就中断了,需要查看前一个元素是否可以和之前的连续子序列组成更长的子序列),否则按照上述公式进行转移。最终结果为dp[n-1]和dp[n-2]中的最大值,因为最后一个元素只有一种情况,即不删除。
时间复杂度:O(n)
代码如下:
相关问题
创建一个战队考勤系统c++
创建一个战队考勤系统通常涉及到几个关键步骤,我们可以在C++中设计这样的系统。这个系统可能包括以下几个模块:
1. **成员管理**:
- 定义一个`Member`类,包含属性如队员ID、姓名、战队ID等,并提供方法添加、删除和查询成员信息。
```cpp
class Member {
public:
// 构造函数,初始化数据
Member(int id, std::string name, int teamId);
// 成员信息获取和设置
int getId() const;
void setId(int id);
std::string getName() const;
void setName(std::string name);
int getTeamId() const;
};
```
2. **战队管理**:
- `WarriorTeam`类负责维护战队列表,记录每个战队及其成员。
```cpp
class WarriorTeam {
private:
std::vector<Member> members;
public:
// 添加成员,检查ID是否冲突
void addMember(Member member);
// 删除成员,根据ID查找并移除
bool removeMember(int memberId);
// 查询特定战队的信息
std::vector<Member> getTeamMembers(int teamId) const;
};
```
3. **考勤功能**:
- 提供方法来标记成员的出勤状态(如打卡、请假等),并保存到相应的成员实例中。
```cpp
void markAttendance(Member &member, AttendanceStatus status);
// 其他辅助方法,比如读取历史考勤记录等
```
4. **界面和输入/输出**:
- 使用控制台I/O或GUI库(如Qt或wxWidgets)来接收用户输入(如成员ID、考勤状态等),展示结果给用户。
5. **错误处理和日志**:
- 确保对可能出现的错误(如无效ID、非法操作等)进行适当的处理,并记录日志以便于排查问题。
```cpp
try {
// 考勤操作...
} catch (const std::exception& e) {
std::cerr << "Error: " << e.what() << std::endl;
}
```
return vm.isJoined ? vm.isThisTeam ? "战队详情" : this.isFull ? "战队已满" : vm.closeParticipation ? "报名截止" : vm.joinTeamId ? "战队详情" : "加入战队" : this.isFull ? "战队已满" : vm.closeParticipation ? "报名截止" : "报名";我想将战队详情去掉
如果你想在给定的条件下将 "战队详情" 从返回的字符串中去掉,你可以在代码中进行修改。以下是修改后的代码:
```typescript
return vm.isJoined
? vm.isThisTeam
? "" // 将 "战队详情" 替换为空字符串
: this.isFull
? "战队已满"
: vm.closeParticipation
? "报名截止"
: vm.joinTeamId
? "战队详情"
: "加入战队"
: this.isFull
? "战队已满"
: vm.closeParticipation
? "报名截止"
: "报名";
```
在这个修改后的代码中,将 `vm.isThisTeam ? "战队详情" :` 替换为 `""`,即将 "战队详情" 替换为空字符串。这样,在给定的条件下,返回的字符串中就不会包含 "战队详情" 了。
请注意,这只是对你提供的代码进行的修改,具体的逻辑和条件判断可能需要根据你的需求进行调整。
阅读全文