最大连续子序列问题,也是出自编程之美。
咋做呢?当然是把结果累加,一旦累加和小于0,那么前面部分可以丢弃掉。
但如果需要具体子序列的位置时,采用动态规划的方法更合理,从后往前探测:
int maxSum(int* a,int n)
{
int nStart=a[n-1];
int nAll=a[n-1];
int start=n-1;
int end=n-1;
for(int i=n-2;i>=0;--i)
{
if(nStart<0)
{
nStart=0;
end=i;
start=i;
}
nStart+=a[i];
if(nStart>nAl)
{
nAll=nStart;
start=i;
}
}
cout<<"start="<<start
<<"\t"<<"end="<<end<<endl;
return nAll;
}
希尔排序怎么做?
void shellSort(int* a,int len,int* delta,int m)
{
for(int i=0;i<m;++i)
shellInsert(a,len,dleta[i]);
}
void shellInsert(int* a,int len,int c)
{
int t,j;
for(int i=c;i<len;++i)
{
if(a[i]<a[i-c])
{
t=a[i];
for(j=i-c;j>=0 && t<a[j]; j=j-c)
a[j+c]=a[j];
a[j+c]=t;
}
}
}
用UDP怎么实现TCP?
简单来说,除了三次握手,四次挥手之外,还需要考虑滑动窗口(双方接发收模块协定的窗口大小)。超时和重传,慢启动拥塞控制,安全性,定时器。接口规范。
丢手机测试哪层会摔坏。
x+(x-1)+...+1=N,当N=100时,结果为14。
HTTP协议的主要特点概括如下:
1.支持客户/服务器模式。
2.简单快速:客户向服务器请求服务时,只需传送请求方法和路径。请求方法常用的有GET、HEAD、POST。每种方法规定了客户与服务器联系的类型不同。
由于HTTP协议简单,使得HTTP服务器的程序规模小,因而通信速度很快。
3.灵活:HTTP允许传输任意类型的数据对象。正在传输的类型由Content-Type加以标记。
4.无连接:无连接的含义是限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间。
5.无状态:HTTP协议是无状态协议。无状态是指协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。另一方面,在服务器不需要先前信息时它的应答就较快。
洗牌算法的要求是这样的:将N个数乱序后输出.由于和扑克牌的洗牌过程比较相似所以我也就称为洗牌算法了.很多地方都不自觉的需要这个算法的支持.也可以将这个算法扩展为从N个数中取出M个不重复的数(0<M<=N)。
经典的做法是:
void MySwap(int &x, int &y)
{
int temp = x;
x = y;
y = temp;
}
void Shuffle(int n)
{
for(int i=n-1; i>=1; i--)
{
MySwap(num[i], num[rand()%(i+1)]);
}
}
这个过程有点像堆排序。
N个连续自然数乱序存放于数组,其中有一个-1。怎么找出来。
我也被问到这个问题。
求和求减。
ip段去重,我也被问到了。
发表于: 2007-10-23 13:37:15