一、单项选择题
1、Objective-C中实例变量默认的访问修饰符是( )
A、@protected
B、@private
C、@public
D、@package
2、以下哪项不是AFNetworking验证证书模式( )
A、AFSSLPinningModeNone
B、AFSSLPinningModePublicKey
C、AFSSLPinningModePrivateKey
D、AFSSLPinningModeCertificate
3、以下哪个不是iOS的网络请求三方库( )
A、AFNetworking
B、Alamofire
C、ASIHttpRequest
D、MJRefresh
4、在iOS中如何给一个UIView添加点击事件( )
A、为该view添加onClick()事件
B、为该view添加UITapGestureRecognizer手势
C、使用-(void)addTarget:(nullable id)target action:(SEL)action forControlEvents:(UIControlEvents)controlEvents方法实现TouchUpInside的监听
D、UIView无法监听到点击事件
5、对于语句UIImageView *img = [[UIImage alloc] init]; img在编译时和运行时分别时什么类型的对象( )
A、编译时是UIImageView的类型;运行时是UIImage类型的对象
B、编译时是UIImage的类型;运行时是UIImageView类型的对象
C、编译时是UIImageView的类型;运行时是UIImageView类型的对象
D、编译时是UIImage的类型;运行时是UIImage类型的对象
6、以下哪种排序算法在最坏情况下的时间复杂度最小( )
A、冒泡排序
B、选择排序
C、归并排序
D、插入排序
7、两台主机A和B已建立了TCP连接,A始终以MSS=1KB大小的段发送数据,并一直有数据发送;B每收到一个数据段都会发出一个接收窗口为9KB的确认段。
若A在T时刻发生超时时拥塞窗口为8KB,则从T时刻起,不再发生超时的情况下,经过10个RTT后,A的发送窗口是 ( )
A、8KB
B、9KB
C、10KB
D、11KB
8、设栈S初始状态为空。元素1,2,3,4,5,6依次通过栈S,若出栈的顺序为4,6,5,3,2,1,则栈S的容量至少应该为( )
A、3
B、4
C、5
D、6
9、在Linux系统下,下列哪个命令可以查看曾经登录到此系统的用户清单( )
A、ps
B、last
C、lastcomm
D、accton
10、在软件开发中,经典的模型就是瀑布模型,下列关于瀑布模型的说法正确的是( )
A、瀑布模型具由于良好的灵活性
B、瀑布模型采用结构化的分析与设计方法,将逻辑实现与物理实现分开
C、瀑布模型的核心是按照软件开发的时间顺序将问题简化
D、利用瀑布模型,如果发现问题则修改的代价很低
二、编程题
1、牛牛有一个由小写字母组成的字符串s,在s中可能有一些字母重复出现。比如在"banana"中,字母'a'和字母'n'分别出现了三次和两次。
但是牛牛不喜欢重复。对于同一个字母,他只想保留第一次出现并删除掉后面出现的字母。请帮助牛牛完成对s的操作。
2、牛牛举办了一场数字游戏,有n个玩家参加这个游戏,游戏开始每个玩家选定一个数,然后将这个数写在纸上(十进制数,无前缀零),然后接下来对于每一个数字将其数位按照非递减顺序排列,得到新的数,新数的前缀零将被忽略。得到最大数字的玩家赢得这个游戏。
3、一个完整的括号字符串定义规则如下:
(1)、空字符串是完整的。
(2)、如果s是完整的字符串,那么(s)也是完整的。
(3)、如果s和t是完整的字符串,将它们连接起来形成的st也是完整的。
例如,"(()())", ""和"(())()"是完整的括号字符串,"())(", "()(" 和 ")"是不完整的括号字符串。
牛牛有一个括号字符串s,现在需要在其中任意位置尽量少地添加括号,将其转化为一个完整的括号字符串。请问牛牛至少需要添加多少个括号。
参考答案
一、
1~5:ACDBA
6~10:CBCBB
二、
1、
#include<iostream>
#include<string>
#include<map>
using namespace std;
int main(){
string x,res="";
map<char,int> book;
int i;
for(cin>>x,i=0;i<x.length();i++)
if(!book.count(x[i])) res+=x[i],book[x[i]]=1;
cout<<res;
}
2、
#include<stdio.h>
#include<algorithm>
int reOrder(int num){
if(num<0) return 0;
int* res=new int[10];
int i=0;
while(num){
res[i++]=num%10;
num=num/10;
}
std::sort(res,res+i);
int j=0;
int newNum=0;
while(j<i){
newNum=newNum*10+res[j++];
}
delete[] res;
return newNum;
}
int main(){
int n;
scanf("%d",&n);
int* data=new int[n];
for(int i=0;i<n;++i){
scanf("%d",data+i);
}
int maxNum=-1;
for(int i=0;i<n;++i){
int curNum=reOrder(data[i]);
maxNum=std::max(maxNum,curNum);
}
printf("%d",maxNum);
}
3、
#include<stdio.h>
#include<algorithm>
#include<string.h>
using namespace std;
char s[100];
int dp[100][100],i,j,n,k;
int main(){
scanf("%s",s),n=strlen(s);
for(i=n-1;i>=0;i--)
for(j=i;j<n;j++)
if(i==j) dp[i][j]=1;
else if(i+1==j){
if(s[i]=='('&&s[j]==')') dp[i][j]=0;
else dp[i][j]=2;
}else{
dp[i][j]=min(dp[i+1][j],dp[i][j-1])+1;
if(s[i]=='('&&s[j]==')')
dp[i][j]=min(dp[i][j],dp[i+1][j-1]);
for(k=i;k<j;k++) dp[i][j]=min(dp[i][j],dp[i][k]+dp[k+1][j]);
}
printf("%d\n",dp[0][n-1]);
}