跪求大佬9:30以后给我贴个京东笔试神奇数代码

怕是又要跪#京东#
全部评论
#include<iostream> #include<vector> #include<algorithm> using namespace std; bool isnum(int i, int sum, int half,vector<int> &bit) { if (sum == half) return true; if (i >= bit.size()-1) return false; return isnum(i + 1, sum + bit[i + 1], half, bit) || isnum(i + 1, sum , half, bit); } int main() { int l, r; cin >> l >> r; int count = 0; for (size_t i = l; i <=r ; i++) { int num = i; vector<int> bit; int sum = 0; while (num) { sum += num % 10; bit.push_back(num % 10); num = num / 10; } if (sum % 2 == 0) { if (isnum(0,bit[0], sum / 2, bit)) count++; } } cout << count; system("pause"); return 0; } 用的暴力方法,求一个简单点的
点赞 回复 分享
发布于 2017-09-08 21:02
数位统计
点赞 回复 分享
发布于 2017-09-08 21:36
#include <iostream> #include <vector> using namespace std; int compute(vector<int> &v, int i){ int sum = 0; int bit = 1; for(int k = 0; k < v.size(); ++k){ if(i & bit) sum += v[k]; bit <<= 1; } return sum; } bool judge(int x){ vector<int> v; int sum = 0; while(x){ int digit = x % 10; if(digit) v.push_back(digit); x /= 10; sum += digit; } if(sum & 1) return false; int n = v.size(); int m = 1 << n; for(int i = 1; i < m; ++i){ int j = (m - 1) ^ i; if(compute(v, i) == compute(v, j)) return true; } return false; } int main(){ int l, r; while(cin>>l>>r){ int res = 0; for(int x = l; x <= r; ++x){ res += judge(x); } cout<<res<<endl; } return 0; }
点赞 回复 分享
发布于 2017-09-08 21:02
百度一下会发现是个很简单的01背包问题
点赞 回复 分享
发布于 2017-09-08 21:02
跪了
点赞 回复 分享
发布于 2017-09-08 21:00

相关推荐

活泼的代码渣渣在泡池...:哈哈哈挺好的,我也上岸美团了,不说了,我又接了一单
点赞 评论 收藏
分享
zzzilik:四个月实习做了3个项目不觉得很假吗,真没必要写这么多吧我感觉挑点核心的重点写一下我感觉会好点
你的简历改到第几版了
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务