2012 小米春季招聘的两个编程题
来源:互联网 发布:caffe 重定向 编辑:程序博客网 时间:2024/03/28 17:05
一、设计一个类MList,它维护一个整数列表(初始为空),并提供了三个方法:
1、把一个整数添加到列表末尾
2、把当前列表翻转
3、顺序输出当前列表中的所有元素
请完善该类定义中的...部分(算法效率越高越好)
class MList
{
...
void add(int value){...}
void reverse(){...}
void print(){...}
};
#include<iostream>using std::cout;using std::endl;void swap(int &a,int &b){a=a^b;b=a^b;a=a^b;}class MList{private :int listsize;int capacity;int *arr;public:MList(){listsize=0;capacity=1000;arr=new int[capacity];}~MList(){delete [] arr;}void add(int value);void reverse();void print();};void MList::add(int value){if(listsize>=capacity){capacity*=2;int *newarr=new int[capacity];if(!newarr){cout<<"allocate failed"<<endl;return ;}for(int i=0;i<listsize;i++)newarr[i]=arr[i];delete []arr;arr=newarr;}arr[listsize++]=value;return ;}void MList::reverse(){int i,j;for(i=0,j=listsize-1;i<j;i++,j--){swap(arr[i],arr[j]);}}void MList::print(){for(int i=0;i<listsize;i++)cout<<arr[i]<<" ";cout<<endl;}int main(){MList list;list.add(1);list.add(2);list.reverse();list.add(3);list.reverse();list.add(4);list.add(5);list.reverse();list.print();return 0;}
二、K皇后问题:
请实现函数count,计算在m*n的矩形棋盘上,摆放k个棋子的可行方案数目。
一个可行方案中,任意两个棋子不在同一行或者同一列或者同一斜线上。(效率越高越好)。
int count(int n,int m,int k);
#include<iostream>using namespace std;int count(int n,int m,int k){int *a=new int [m+1];int backtrack(int *a,int i,int n,int m,int k);int sum=backtrack(a,1,n,m,k);delete []a;return sum;}int backtrack(int *a,int i,int n,int m,int k){static int sum=0;if(i>m){int c=0;for(int j=1;j<=m;++j)if(a[j]!=0)c++;if(c==k)sum ++;}else{bool constraint(int *a,int i);for(int j=0;j<=n;j++){a[i]=j;if(constraint(a,i))backtrack(a,i+1,n,m,k);}}return sum;}bool constraint(int *a,int i){if(a[i]==0)return true;for(int j=1;j<i;j++){if(a[j]==0)continue;if(abs(a[i]-a[j])==abs(i-j)||a[i]==a[j])return false;}return true;}int main(){cout<<count(8,8,8)<<endl;return 0;}
- 2012 小米春季招聘的两个编程题
- 携程2017春季招聘编程题
- 2012年小米校园招聘实习生笔试编程题
- 小米2017校园招聘编程题
- [百度2015春季实习生招聘附加题]今天要吃点好的!
- 网易16年春季实习生招聘的一道算法题
- 小米 2012 春季校招 笔试
- 2016网易春季实习生招聘编程题-求第K大元素
- 2011淘宝春季实习生招聘笔试题
- 百度2015春季实习生招聘附加题
- 百度2017春季招聘笔试题
- 百度2017春季招聘笔试题
- 百度2015春季实习生招聘附加题_今天要吃点好的!
- 小米 机试编程题之 两个整数的二进制位有多少相同
- 2012年小米在川大的校园招聘笔试题
- 小米校园招聘笔试题寻找相似的帖子
- 2017百度春季实习生编程题之有趣的排序
- 百度2012年春季实习生校园招聘笔试题和答案
- sql%notfound、sql%rowcount和return
- 如何在linux内核中调用用户空间的程序
- ubuntu 实用命令
- 正向代理与反向代理的区别
- excel 打印 调整为A4纸大小
- 2012 小米春季招聘的两个编程题
- Openssl生成CA及签发证书方法
- 苹果键盘及Xcode快捷键整理
- man 命令 linux ubuntu 使用 方法
- DataTable 行列转换 将原来的行表转化成交叉表,无对应值赋默认值,用于统计显示或报表
- Ubuntu软件包管理命令
- QT的tr国际化
- ubuntu清理垃圾命令&备份
- Eclipse 中修改android的Default debug keystore 搬家、备份后启动Android PANIC :Could not open D:\java2\android\and