面试OR笔试35——xor
来源:互联网 发布:混合高斯算法 编辑:程序博客网 时间:2024/05/29 19:22
1 题目及要求
1.1 题目描述
给出n个数字a_1, …., a_n,求最多有多少个不重叠的非空区间,使得每个区间内数字的异或(xor)都为0。
即找出最大的k,使得存在k个区间(l(i),r(i)),满足
1<=l(i)<=r(i)<=n (1<=i<=k), r(i)<l(i+1) (1<=i<k),且
a[l(i)] xor a[l(i)+1] xor …. xor a[r(i)] ==0 (1<=i<=k)
例如:
当输入为[3, 0, 2, 2]时,答案为2,存在2个区间[1]和 [2, 2]满足;
当输入为[2, 2, 0, 2, 2]时,答案为3,[2, 2],[0]和[2, 2]满足。
2 解答
2.1 题目分析
动态规划。
2.2 代码
#include <iostream>#include <vector>using namespace std;int numberOfXor0(vector<int> &nums) {int n = nums.size();if (n < 1) return 0;vector<int> dt(n+1);dt[0] = 0;for (int k1(0),tmp;k1 < n;++k1) {dt[k1+1] = dt[k1];tmp = 0;for (int k2(k1);-1 < k2;--k2) {tmp ^= nums[k2];if (!tmp && dt[k1+1]<1+dt[k2]) dt[k1+1]=1+dt[k2];}}return dt[n];}int main(){vector<int> nums{ 3,0,2,2 };cout << numberOfXor0(nums); return 0;}
阅读全文
0 0
- 机器学习笔记:第一章习题
- Coursera机器学习课程笔记——第1周——Introduction引言
- Kosaraju算法详解
- Week1 121.Best Time to Buy and Sell Stock
- Appium基础篇11-元素操作之点击和输入
- 面试OR笔试35——xor
- Android中的颜色设置和常见RGB颜色表
- CSS3box-shadow与text-shadow
- java web 项目部署到 阿里云ecs(win)
- event(condition variable signal)
- 第零周9.10
- 定时器
- 九度 题目1444:More is better
- Android Studio自定义配置注释模板