京东笔试题 神奇数
来源:互联网 发布:java线程池下载多任务 编辑:程序博客网 时间:2024/05/21 14:47
先吐槽一下CSDN编辑器,编辑了半天,一个ctr+z,居然全没有了,重新写给定整数区间,找其中的神奇数个数,因此最核心的是写一个判定是否是神奇数的函数。下面只介绍怎么判定是否是神奇数。
神奇数定义:一个数各个数位的数字可以分为和相等的两组,则为神奇数。如242这个数,各个数位数字为{2,4,2},可以分为{2,2}和{4}两组,且和都为4,所以是神奇数。
思路:当需要排列组合却很麻烦,不能有两三个for循环写出来,或者循环嵌套次数不确定时。绞尽脑汁想不出来好办法,那就用递归大法吧。代码如下:
#include <iostream>#include<cmath>#include <iostream>#include<string>#include<algorithm>#include<numeric>using namespace std;bool isMagic(int target,vector<int> &num);int main() { int num;while(1){cin >> num;vector<int> numVec;int sum = 0;while(num > 0){//快速将数字转化为数组sum += num % 10;numVec.push_back(num % 10);num /= 10;}sum = accumulate(numVec.begin(),numVec.end(),0);if(sum % 2 > 0){//如果和是奇数,则肯定不是神奇数cout << "不是神奇数" << endl;system("pause");}else{ int half = sum / 2;//和的一半 if(isMagic(half,numVec)) cout << "是神奇数" << endl; else cout << "不是神奇数" << endl; system("pause");} } return 0; }bool isMagic(int target,vector<int> &num){//递归函数int len = num.size();if(target == 0 && len > 0)//说明已经找到一个分组,使得和为halfreturn true;if(target < 0)//这种组合找不到了return false;bool result = false;for(int i = 0; i < len; ++i){vector<int> numTmp = num;vector<int>::iterator it = numTmp.begin() + i;numTmp.erase(it);result = result || isMagic(target - num[i],numTmp);//用||,是因为底层递归函数返回找到,则找到了if(result)break;}return result;}
结果:
224
是神奇数
请按任意键继续. . .
12
不是神奇数
请按任意键继续. . .
112
是神奇数
请按任意键继续. . .
121
是神奇数
请按任意键继续. . .
2341
是神奇数
请按任意键继续. . .
1234567890
不是神奇数
请按任意键继续. . .
31265487
是神奇数
请按任意键继续. . .
1
不是神奇数
阅读全文
1 0
- 京东笔试题 神奇数
- 2018京东笔试 疯狂序列 神奇数
- 【算法题】神奇数
- 京东笔试:幸运数
- 一个笔试题神奇结果的思考
- 神奇数
- 神奇数
- 神奇数
- 神奇数
- 神奇数
- 神奇数
- 京东笔试题——幸运数
- 京东Android第二题:神奇数
- 网易互娱2017实习生招聘游戏研发工程师在线笔试第二场(神奇的数)
- 神奇的浮点数
- 神奇的catalan数
- 神奇的Catalan数
- 神奇的魔法数
- 软件测试概念及分类整理汇总
- Django 开发学习笔记(3)- 编写自定义的页面
- 测试系列-CMMI 知识扫盲篇
- 算法练习(3):Median of Two Sorted Arrays
- 多线程同步机制2-深入理解synchronized关键字
- 京东笔试题 神奇数
- springboot mail简单实例
- 通过实例理解:C语言 volatile 关键字
- 网页退出弹出新网页或者收藏夹
- 9.9 7日知识实践和总结(关于JavaScript的数组操作)
- Django 开发学习笔记(4)- 关于数据 ORM
- 自己写的顺序表的基本操作,插入、删除、修改,给出完整代码,其中运用到goto语句
- IE9- 图片|遮挡|绝对|定位|元素的|解决|办法
- jQuery事件对象的作用(利用冒泡事件优化)