一、单项选择题
1、下面哪些代码片段能实现如下功能:将一个 layer 设为透明,并在父 layer 中的层级更靠后( )
A、theLayer.opacity=0.0;theLayer.zPosition=0;
B、theLayer.opacity=0.0;theLayer.zPosition= -100;
C、theLayer.opacity=0.0;theLayer.zPosition=100;
D、theLayer.opacity=1.0;theLayer.zPosition=0;
2、下面哪个能正确定义一个 Objective-C 类( )
A、@class ClassName : ItsSuperclass { instance variable declarations } method declarations @end
B、@interface ClassName : ItsSuperclass { instance variable declarations } method declarations @end
C、@class ClassName : ItsSuperclass { instance variable declarations method declarations } @end
D、@implementation ClassName : ItsSuperclass { instance variable declarations } method declarations @end
3、下面关于线程管理错误的是( )
A、GCD所用的开销要比NSThread大
B、NSOperationQueue是比NSthread更高层的封装
C、可以在子线程中修改UI元素
D、GCD可以根据不同优先级分配线程
4、在设计模式中,应该优先使用_____关系从而实现复用( )
A、委派
B、继承
C、创建
D、都不对
5、哪个能获取到APP当前对外版本号( )
A、[[NSBundle mainBundle] objectForInfoDictionaryKey:@"CFBundleShortVersionString”]
B、[[NSBundle mainBundle] objectForInfoDictionaryKey:@"CFBundleVersion”]
C、[[NSBundle mainBundle] objectForInfoDictionaryKey:@"CFBundleInfoDictionaryVersion"]
6、假设以下代码可能存在循环引用情况,代码中的“关键字”应该替换为下面选项的哪一项可以防止循环引用( )
class HTMLElment {
let name: String = "title"
let text: String? = "myTitle"
lazy var asHTML: () -> String = {
// text
// Capture list
[关键字 self] in
if let text = self.text {
return "<\(self.name)>\(text)</\(self.name)>"
} else {
return "<\(self.name)>"
}
}
}
A、assign
B、weak
C、unowned
D、strong
7、Linux下哪个命令可以用于判断host1主机是否能够访问host2主机的端口( )
A、ping
B、ifconfig
C、telnet
D、netstat
8、有一个算法的递推关系式为:T(n) = 9 T(n / 3) + n,则该算法的时间复杂度为( )
A、O(n^3)
B、O(nlogn)
C、O(n)
D、O(n^2)
9、由下面5个点:1,1,2,3,5构成的哈夫曼树的带权路径长度为( )
A、23
B、24
C、25
D、26
10、Linux系统下,用什么命令来查看系统进程( )
A、df
B、ifconfig
C、netstat
D、ps
二、编程题
1、牛牛参加了一场考试,考试包括n道判断题,每做对一道题获得1分,牛牛考试前完全没有准备,所以考试只能看缘分了,牛牛在考试中一共猜测了t道题目的答案是"正确",其他的牛牛猜为"错误"。考试结束后牛牛知道实际上n道题中有a个题目的答案应该是"正确",但是牛牛不知道具体是哪些题目,牛牛希望你能帮助他计算可能获得的最高的考试分数是多少。
2、有一种有趣的字符串价值计算方式:统计字符串中每种字符出现的次数,然后求所有字符次数的平方和作为字符串的价值
例如: 字符串"abacaba",里面包括4个'a',2个'b',1个'c',于是这个字符串的价值为4 * 4 + 2 * 2 + 1 * 1 = 21
牛牛有一个字符串s,并且允许你从s中移除最多k个字符,你的目标是让得到的字符串的价值最小。
3、牛牛和羊羊都很喜欢青草。今天他们决定玩青草游戏。
最初有一个装有n份青草的箱子,牛牛和羊羊依次进行,牛牛先开始。在每个回合中,每个玩家必须吃一些箱子中的青草,所吃的青草份数必须是4的x次幂,比如1,4,16,64等等。不能在箱子中吃到有效份数青草的玩家落败。假定牛牛和羊羊都是按照最佳方法进行游戏,请输出胜利者的名字。
参考答案
一、
1~5:BBCAA
6~10:CCDCD
二、
1、
#include<iostream>
using namespace std;
int main(){
int n,t,a;
cin>>n;
cin>>t;
cin>>a;
if(t<a)
cout<<t+n-a;
else if(t==a)
cout<<n;
else
cout<<n+a-t;
return 0;
}
2、
#include <iostream>
#include <string>
#include <queue>
using namespace std;
int solve(string s, int k){
int count[26] = { 0 };
for (int i = 0; i < s.size(); i++){
count[s[i] - 'a']++;
}
priority_queue<int> q(count, count + 26);
while (k--){
int temp = q.top();
q.pop();
temp--;
q.push(temp);
}
int result = 0;
while (!q.empty()){
int num = q.top();
q.pop();
result += num*num;
}
return result;
}
int main(){
string s;
int k;
while (cin >> s >> k){
if (s.size() <= k){
cout << 0 << endl;
continue;
}
cout << solve(s, k) << endl;
}
return 0;
}
3、
#include<stdio.h>
int dp[10],n,x,i,j;
int main(){
for(i=1;i<10;i++){
int flag=0;
for(j=1;j<=i;j*=4)
if(dp[i-j]==0) flag=1;
dp[i]=flag;
}
for(scanf("%d",&n),i=0;i<n;i++)
scanf("%d",&x),printf("%s\n",dp[x%10]?"niu":"yang");
}