1005.继续(3n+1)猜想
2015-12-05 20:14
260 查看
int count(int n, vector<int> &keys) { if (n == 1) { return 1; } else if (n % 2) { n = (3 * n + 1) / 2; keys.push_back(n); count(n,keys); } else { n /= 2; keys.push_back(n); count(n,keys); } } bool check(int n, vector<int> &num) //查找原数据中是否含有关键字,若有则删除 { bool mark = false; for (auto i = num.begin(); i != num.end();++i) { if (n==*i) { i = num.erase(i); if (i==num.end()) //如果是最后一项,需要手动减1迭代器,否则会溢出 { --i; } mark = true; } } return mark; } int _tmain(int argc, _TCHAR* argv[]) { int n; cin >> n; int *num = new int ; vector<int> num_cp; for (int i = 0; i < n;++i) { cin >> num[i]; num_cp.push_back(num[i]); } for (int i = 0; i < n;++i) //对数组中的每个数都进行关键字保存,并检查原数据中是否含有关键字 { vector<int> keys; count(num[i],keys); for (auto c:keys) { check(c, num_cp); } } for (auto i = num_cp.begin(); i != num_cp.end()-1;++i) //进行冒泡排序 { for (auto j = num_cp.end()-1; j > i;--j) { if ((*j)>(*(j-1))) { int temp = *j; *j = *(j - 1); *(j - 1) = temp; } } } for (auto i = num_cp.begin(); i != num_cp.end(); ++i) //输出 { if (i == num_cp.end() - 1) { cout << *i; } else cout << *i << ' '; } return 0; }
相关文章推荐
- IOS 项目协作开发遇到apple push notification 提示开发者权限enrolled需求提示
- 相似性度量总结
- uml类图关系总结
- 【总结】java命令解析以及编译器,虚拟机如何定位类
- centos7中crontab的变更
- URL Session(Cache)
- 笔记十三(绘制二)
- 安装系统出现Winload.exe错误0xc000000e解决方法
- 随机森林算法-Deep Dive
- 在线编程及其学习平台
- /etc/profile、/etc/bashrc、.bash_profile和.bashrc的区别
- Mybatis逆向生成
- JQuery--jQuery对象与DOM对象
- 完成【PS单张HDR效果】作业的一些提示
- Hibernate反向工程可能存在的问题
- hdu 4614 线段树+二分
- Tomcat6.0的安装与配置
- (python)下载喜马拉雅电台的音频
- Openstack在centos上的配置--(一)前期环境准备
- 【总结】String in Java