几道编程题答案寻求
题目: 1.数组a中存放K个整数的序列{N1,N2,…,Nk,},其任意连续子序列可表示为{Ni,N[size=1]i+1[/size],…,Nj,},其中1<=i<=j<=K.最大连续子序列是所有连续子序列中元素和最大的一个.例如给定序列{-2,11,-4,13,-5,-2},其最大连续子序列为{11,-4,13},最大和为20,子序列长度为3.
[bo]问题: 编写函数maxsubstr,其功能是求最大连续子序列的最大和,以及最大连续子序列的长度,函数的返回值表示求得的最大和。[/bo]
2.为便于描述屏幕上每个像素的位置,在屏幕上建立平面直角坐标系。屏幕左上角的像素设为原点,水平向右方向设为x轴,垂直向下方向设为y轴。
设某种显示器的像素有128*128,即在每条水平线和垂直线上都有128个像素。这样,屏幕上的每个像素可用坐标(x,y)来描述其位置,其中x和y都是整数,0<=x<=127,0<=y<=127。
现用一维数组MAP来存储整个一屏显示的位图信息。数组的每个元素有16位二进制,其中每位对应一个像素,“1”表示该像素“亮”,“0”表示该像素“暗”。数组MAP的各个元素与屏幕上的像素对应后,其位置可排列如下:
MAP(0),MAP(1),……,MAP(7)
MAP(8),MAP(9),……,MAP(15)
……
MAP(1016),MAP(1017),……,MAP(1023)
[bo]问题: 根据以上描述,写一函数int SetPixel(unsigned short MAP[],int x,int y,int v);用来将指定坐标(x,y)上的像素置为“亮”(v=1)或“暗”(v=0)。函数的返回值表示操作的成功与否,取值有下面三种:
a) 返回0,表示成功;
b) 返回1,表示出错,因为v值不合法;
c) 返回2 ,表示出错,因为点(x,y)不在屏幕范围内。[/bo]
3.假设用链表表示八进制,如八进制数536被表示为如下链表:
Q->[un]5| [/un]->[un]3| [/un]->[un]6|^[/un]
要求编写函数Add,它有两个参数P和Q,分别指向两个链表(表示两个八进制)。调用函数Add(P,Q)后将返回链表R,R是表示P八进制加上Q八进制后所得的八进制数的链表。例如,再有P如下:
P->[un]7| [/un]->[un]2| [/un]->[un]4| [/un]->[un]3|^ [/un]
则执行Add(P,Q)结果应如下(注:0536+07243=010001):
R->[un]1| [/un]->[un]0| [/un]->[un]0| [/un]->[un]0| [/un]->[un]1|^[/un]
谢谢!
[[it] 本帖最后由 妍清舞 于 2008-3-5 18:03 编辑 [/it]]