校招笔试题-玩转南美馆
来源:互联网 发布:商洛java培训班 编辑:程序博客网 时间:2024/04/30 06:07
校招笔试题-玩转世博南美馆
原题描述:
世博会期间,小明计划玩遍所有南美国家馆,南美共有10个国家,按顺序编号分别为0-9.
小明的游玩方案是这样的:
若玩的人太多,就把馆分成两批,分的方式是在相邻的某两馆之间插一个牌子:任选其中一批先玩,另一批后玩;
若一批馆还是玩不玩,则继续分为两批,且一批中的馆全部玩完之后才能玩下一批馆;
每批馆玩的时候,只能从这批当中编号最小的馆开始,按照相邻的编号逐个玩,一天至少可以玩一个馆。
十个馆玩遍之后,小明拿出在是个馆盖章的册子,请你根据册子上盖章的顺序,判断小明是否遵循了自己的游玩方案。
输入:0-9十个数字的排列;
输出:符合规则的,输出Yes,不符合规则的,输出No;
样例输入输出:
思路:
就是找出最小的那个,然后把最小的左边的赋值到一个新数组里,右边的也赋值到一个新数组里。然后左边的那个数组要么全大于右边的数组,要么全小于。不可能有其他情况,就这样递归判断
下面是代码实现,自己写的,还望指正
C++代码:
#include <iostream>#include <sstream>#include <string>#include <vector>using namespace std;bool check(vector<int>& vec_int);int depart(vector<int>& vec);int judge(vector<int>& left,vector<int>& right);int main(){ int result=0; vector<int> vec_int; string inputstr;//="3287956401"; cin>>inputstr; int strlen=inputstr.length(); stringstream ss; for(int i=0;i<strlen;i++) { int tmp; ss<<inputstr[i]; ss>>tmp; ss.clear(); vec_int.push_back(tmp); } result=check(vec_int); if(result) cout<<"yes"<<endl; else cout<<"no"<<endl;//下面两行是阻止命令窗口闪退 // int a;// cin>>a; return 0;}bool check(vector<int>& vec_int){ if(vec_int.size()==1) return true; int minpos=depart(vec_int); vector<int>::iterator iter=vec_int.begin()+minpos; vector<int> vec_left; vector<int> vec_right; if(minpos==0) vec_left.push_back(vec_int[0]); else vec_left.insert(vec_left.end(),vec_int.begin(),iter); if((minpos+1)==vec_int.size()) vec_right.push_back(vec_int[minpos]); else vec_right.insert(vec_right.end(),iter+1,vec_int.end()); if(judge(vec_left,vec_right)) { if(!check(vec_left)) return false; if(!check(vec_right)) return false; } else return false; return true;}int depart(vector<int>& vec){ int min=vec[0],pos=0; for(int j=0;j<vec.size();j++) { if(vec[j]<=min) { min=vec[j]; pos=j; } } return pos;}int judge(vector<int>& left,vector<int>& right){ int flag=0; for(int i=0;i<left.size();i++) for(int j=0;j<right.size();j++) { if((i==0)&&(j==0)) { if(left[i]>right[j]) flag=1; else flag=-1; } if(flag==1) { if(left[i]>right[j]) continue; else return 0; } else if(flag==-1) { if(left[i]<right[j]) continue; else return 0; } } return 1;}
1 0
- 校招笔试题-玩转南美馆
- 校招笔试题-玩转南美馆
- 校招笔试题
- 一些校招笔试题
- 人人校招笔试题
- 淘宝校招笔试题
- 腾讯校招笔试题
- 网易校招笔试题
- 百度校招笔试题
- 搜狐校招笔试题
- 百度校招笔试题
- 阿里校招笔试题
- 恒生校招笔试题
- 2017校招笔试题
- 360校招笔试题
- [转]Hulu 2013北京地区校招笔试题
- 2013腾讯校招笔试题
- Hulu 2013北京地区校招笔试题
- 创建一个最简单的Linux服务
- centos安装setuptools (easy_install)
- [POJ 1811]Prime Test---Miller-Rabin算法&Pollard-rho算法
- Android-播放音频文件
- 如何保护web站点免受SQL注入攻击
- 校招笔试题-玩转南美馆
- 【Qt开发】关于Qt应用程序中的堆栈、静态存储区的使用错误
- 3327顺序表应用4:元素位置互换之逆置算法
- zk集群笔记
- 全国主要城市交通卡芯片一览
- STL学习之map与multimap
- Win10安装nodejs 错误代码2502,2503
- 数据库性能优化常用SQL脚本总结
- 条条大路通罗马 - 华为笔试题目