有ABCD四个人要在夜里过一座桥,他们通过这座桥分别需要耗时1、2、5、10分钟,现在只有一支手电,过桥时必须带有手电,并且同时最多只能两个人一起过桥。请问如何安排能够让四个人尽快都过桥。
1和2 先过。1返回,5和10先过,2返回,1和2一起过。一共时间=2+1+10+2+2=17分钟
25匹马赛跑,每次只能跑5匹马,最快能赛几次找出跑得最快的3匹马?赛跑不能计时,并假设每匹马的速度是恒定不变的。请给出答案并描述比赛过程。
第一--五局:分成5个组,可以得出5个组的第一名
第六局:5个第一名一起跑,这样可以得出最快的那一匹。
第七局:可能成为2,3名的再赛一次,包括最快组的2,3名,次快组的1,2名,第三快组的第1名。
所以一共是7次
在有团购之前,大家都是现场买门票,公园的门票是5元,某天售票处开门时没有准备零钱。假设一天来购票的依次有2N个人,其中有N个人有5元零钱,其他N个人只有10元面值的钱;假设每人只买一张票。请问任何人都不必为找零而等待的概率是多少?
任何人不必等的情况数 Cn=2N!/(N!*N!*(N+1)) 总的情况数 T=2N!/N!*N! 不必等的概率为:Cn/T = 1/(N+1)
有一个函数“int f(int n)”,请编写一段程序调试函数f(n)是否总是返回0,并添加必要的注视和说明。
int n = INT_MIN;
do
{
if(0 != f(n))
{
//error
break;
}
}
while(n++ != INT_MIN);
if(n != INT_MIN) error;//
用你熟悉的语言编写程序用两个栈(Stack)模拟队列(Queue)的先进先出操作,仅实现add、remove方法即可。
1)请先描述思路; 2)编写完整代码实现,编程语言不限。
思路:栈是“先进后出”,队列是“先进先出”,当向队列中加入元素n,m,在队列中n应该位于队尾,当删除时候,元素n最先删除;向栈1中加入元素n、m时,m位于栈顶,将栈1中元素加入到栈2中,则n位于栈2的顶部,当删除时,元素n先删除,即实现了两个栈模拟队列的过程;
public class queue{
private Stack<String> stackOne=new Stack<String>();
private Stack<String> stackTwo=new Stack<String>();
public void add(String str){
stackOne.push(str);
}
public void delete(){
if(stackTwo.isEmpty()){
while(!stackOne.isEmpty()){
stackTwo.push(stackOne.pop());
}
}
if(stackTwo.isEmpty()){
system.out.printIn("queue is empty");
}
else{
stackTwo.pop();
}
}
}
编写函数,获取两段字符串的最长公共子串的长度,例如:
S1= GCCCTAGCCAGDE
S2= GCGCCAGTGDE
这两个序列的最长公共子串是GCCAG,也就是说返回值。
1)请先描述思路;
2)编写完整代码实现,编程语言不限。
这道题使用矩阵对角线能够比较形象的描述问题解法,放出自己的C++代码如下:
int longestCommonString(string s1, string s2)
{
int len = 0;
int *temp = new int[s2.length()];
memset(temp, 0, s2.length() * sizeof(int));
for (int i = 0; i < s1.length(); i++)
{
for (int j = s2.length() -1; j >= 0; j--)
{
if (s1[i] == s2[j])
{
if (i == 0 || j == 0)
temp[j] = 1;
else
temp[j] = temp[j - 1] + 1;
if (len < temp[j])
len = temp[j];
}
}
else
temp[j] = 0;
}
return len;
}
(iOS开发选做)实现多线程都有哪几种方法?
(Android开发选做)关于Activity的生命周期,下拉statusbar时,桌面Activity会触发哪几个生命周期?系统关机时,弹出关机Dialog之后,此时,桌面Activity会触发哪几个生命周期?
下拉时触发:onPause(),onStop()
弹出dialog:onPause()
(系统运维选做)有主机A、B、C通过eth0和同一个交换机相连,A的IP地址为192.168.1.2,子网掩码255.255.255.0,B的IP地址为192.168.2.2,子网掩码255.255.255.0,C的IP地址为192.168.4.2,子网掩码255.255.255.0。现希望A和B能够通信,A和C、B和C不能通信。
1)假设能更改A和B的子网掩码,要如何设置A和B的子网掩码?
2)如果不能更改子网掩码,需要在A和B做什么设置?
3)A和B通信时,C是否能够通过sniffer截获A和B通信的报文,如果只能截获一部分报文,是哪一类报文?
4)C可以仅通过sniffer得知A和B的IP地址和MAC地址吗?如果能,如何获得?
1) 通过修改A B掩码使得它们能互相通信的话,只需要AB 同在一个子网。因此A 和B 的掩码为255.255.252.0 , C不变
2)A的IP 地址修改为与B 同一个网段,如192.168.2.3