2016兰亭校招C++
来源:互联网 发布:软件自由职业者 编辑:程序博客网 时间:2024/05/17 08:27
这个是我这个菜鸟笔试遇到的编程题,感觉有点像动态划分,当时没做出来。。。非常惭愧~
写出来,慢慢积累吧~~
输出n位的整数,使整数中相邻的两位整数数字差的绝对值大于等于4。输出所有满足此条件的整数。
例如:输入:n=5; 输出:37051,38051,39051,…
思考:首先第一位是1~9这9个数字中选择,其余的n-1位从0~9选择。
我的想法是,先确定第一位数,然后依据条件确定第二位,再依据第二位的数值,确定第三位…以此类推~
实际上就是一个递归的运算,这里,递归结束的条件为:n个整数均已选好。
看程序,时间复杂度有些高,望前辈们指教~
#include<iostream>#include<vector>using namespace std;static vector<int> v_ans;void FindInteger(int pre_int,int n){if (v_ans.size() > n)return;if (v_ans.size() == n){for (vector<int>::iterator it = v_ans.begin(); it != v_ans.end(); it++){cout << *it;}cout << endl;}for (int i = 0; i <= 9; i++){if (abs(i - pre_int) >= 4){v_ans.push_back(i);FindInteger(v_ans.back(),n);v_ans.pop_back();}}}int main(){cout << "please intput n:" << endl;//你想输出几位数int N;cin >> N;for (int i = 1; i <= 9; ++i){v_ans.resize(1);v_ans[0] = i;FindInteger(v_ans.back(),N);}system("pause");return 0;}
在做这个题目的时候,需要清楚vector容器的使用,刚开始在初始化v_ans的时候,就是给整数的第一位赋值的时候,直接使用了v_ans[0]=i;运行时总是崩溃,后来才 知道使用索引[]操作符对vecor操作,不会自动申请内存空间,则要手动用resize函数来申请空间(这是参考的别人的博客的结论)。
0 0
- 2016兰亭校招C++
- C语言需要注意的基础知识点(兰亭风雨)
- 决战2016校招
- 2016校招心得
- 2016 校 招
- 兰亭序
- 兰亭序
- 兰亭序集联
- C/C++ 校招面试知识点记录
- 【面试笔试-c/c++】兰亭集势2013校园招聘试题。
- 【面试笔试-c/c++】兰亭集势2013校园招聘试题。
- 京东2018校招 神奇数 (c/c++)
- 阿里2016校招java
- 2016校招求职经验
- 腾讯2016校招笔试
- 2016届 阿里巴巴校招研发工程师C/C++笔试题--2015.08.23
- 网易游戏2016校招"数据挖掘研究员"在线比赛题一求解算法(C++)
- 字符串处理(华为2016校招软件类机试编程题)(C++)
- java动态代理
- 基于apache.tools.zip压缩文件(夹)
- 【DataGuard】由于备库参数设置不当导致数据文件无法添加的故障分析
- IOS Post请求与GET请求
- java 队列
- 2016兰亭校招C++
- casperjs中Selectors使用总结
- Eclipse安装Maven插件
- PHP上传文件
- SVN commit 不显示相关文件
- Java强引用、 软引用、 弱引用、虚引用
- Eclipse中SVN的安装步骤(两种)和使用方法
- SpringBoot启动时的Banner设置
- 实际工作中的编程是怎么样的,与学校里有什么不同?