饿了么笔试0307
有没有大佬可以讲讲饿了么笔试0307算法编程的第一道题目呀?
大致意思就是,找出GCD与异或和乘积最大的子数组;
我的思路就是穷举,但是0%的通过率......
int ans = 0;
for(int i = 0; i < n; ++i) {
int cxor = 0; int cgcd = 0;
for(int j = i; j < n; ++j) {
cxor = cxor ^ nums[j];
cgcd = (j == i ? nums[j] : gcd(cgcd, nums[j]));
ans = max(ans, cgcd*cxor);
}
大致意思就是,找出GCD与异或和乘积最大的子数组;
我的思路就是穷举,但是0%的通过率......
int ans = 0;
for(int i = 0; i < n; ++i) {
int cxor = 0; int cgcd = 0;
for(int j = i; j < n; ++j) {
cxor = cxor ^ nums[j];
cgcd = (j == i ? nums[j] : gcd(cgcd, nums[j]));
ans = max(ans, cgcd*cxor);
}
全部评论
我给加了个剪枝AC了,如果当前最大公约数乘最大异或值也<=ans,那往后就没必要看了。看到有大佬说其实就是最大数的平方,发现真是
相关推荐

点赞 评论 收藏
分享
点赞 评论 收藏
分享
点赞 评论 收藏
分享
点赞 评论 收藏
分享