xx校园招聘编程题 : n级台阶、String类、数据交换并排序
2015-09-21 20:53
344 查看
xxx2016年校园招聘编程题 : n级台阶、String类、数据交换并排序
1、n级台阶
n级台阶,可以跳1级,也可以跳2级,总共有多少总跳法?
算法思想:算法为fun(n)
(1)当只有1级时,跳1级,只有1种方法;
(2)当只有2级时,可以只跳1级,也可以一次跳2级,总共有2种方法
(3)当为n>2级时,第1级跳1级,剩下的n-1级台阶跳法有fun(n-1);第一级跳2级时,剩下的n-2级跳法有fun(n-2)种。
即fun(n)=fun(n-1)+fun(n-2).为Fibonacci数列.
2、String类函数
n个乱序的数,其中只能有0与其他任何位置的数SWAP(交换),编程实现升序排序
考试时候没有时间了,读题没有读懂,后面经同学指点,应该是比较交换只能是下标为0的位置和其他任何位置交换,
即应该是冒泡法的排序思想:
1、n级台阶
n级台阶,可以跳1级,也可以跳2级,总共有多少总跳法?
算法思想:算法为fun(n)
(1)当只有1级时,跳1级,只有1种方法;
(2)当只有2级时,可以只跳1级,也可以一次跳2级,总共有2种方法
(3)当为n>2级时,第1级跳1级,剩下的n-1级台阶跳法有fun(n-1);第一级跳2级时,剩下的n-2级跳法有fun(n-2)种。
即fun(n)=fun(n-1)+fun(n-2).为Fibonacci数列.
</pre><pre name="code" class="cpp">int FunSteps(int n) { if(n==1||n==2) return n; else return FunSteps(n-1)+FunSteps(n-2); }
2、String类函数
#include<iostream> #include<string> using namespace std; class String { private: char *m_data; public: String(const char *str=NULL); String(const String &another); String & operator=(const String &rhs); ~String(); void print(); }; / 4000 /返回值类型 类名::函数名(参数) String::String(const char *str) { if(str) { m_data=new char[strlen(str)+1]; strcpy(m_data,str); } else { m_data=new char[1]; *m_data='\0'; } } //新变量的拷贝构造函数 String::String(const String &another) { if(another.m_data) { m_data=new char[strlen(another.m_data)+1]; strcpy(m_data,another.m_data); } else { m_data=new char[1]; *m_data='\0'; } } //已有变量的=重载 String & String::operator=(const String &rhs) { if(this==&rhs) return *this; if(m_data) delete [] m_data; if(rhs.m_data) { m_data=new char[strlen(rhs.m_data)+1]; strcpy(m_data,rhs.m_data); } else { m_data=new char[1]; *m_data='\0'; } return *this; } //析构函数 String::~String() { if(m_data) delete [] m_data; } //输出 void String::print() { cout<<m_data; } int main(void) { String c("ok"); c.print(); String c1=c; //拷贝构造函数 c1.print(); String c2; c2=c; //=重载函数 c2.print(); return 0; }3、数据交换并排序
n个乱序的数,其中只能有0与其他任何位置的数SWAP(交换),编程实现升序排序
考试时候没有时间了,读题没有读懂,后面经同学指点,应该是比较交换只能是下标为0的位置和其他任何位置交换,
即应该是冒泡法的排序思想:
#include<iostream> using namespace std; void bubble(int *a,int n) { int t; for(int i=0;i<n;i++) { for(int j=0;j<n-1-i;j++) { if(a[j]>a[0]) { t=a[j]; a[j]=a[0]; a[0]=t; } } t=a[0]; a[0]=a[n-1-i]; a[n-1-i]=t; } } int main(void) { int a[10]={2,10,11,9,1,4,9,8,5,6}; bubble(a,10); for(int i=0;i<10;i++) cout<<a[i]<<" " ; cout<<endl; return 0; }
相关文章推荐
- Android之获取手机上的图片和视频缩略图thumbnails
- android string.xml文件中的整型和string型代替
- Android java 与 javascript互访(相互调用)的方法例子
- android上改变listView的选中颜色
- String.intern
- 肯特·贝克:改变人生的代码整理魔法
- 你应该学习哪种编程语言?
- [转]我们需要一种其他人能使用的编程语言
- DB2编程序技巧(1)
- DB2编程序技巧 (四)
- 女人VS编程_国庆快乐
- DB2编程序技巧 (六)
- DB2编程序技巧 (三)
- DB2编程序技巧 (九)
- DB2编程序技巧 (七)
- DB2编程序小小技巧
- DB2编程序技巧 (五)
- 文件遍历排序函数
- DB2编程序技巧 (一)
- DB2编程序技巧 (八)