- 論壇徽章:
- 4
|
[quote]原帖由 [i]ychang0918[/i] 于 2008-9-1 16:22 發(fā)表 [url=http://72891.cn/redirect.php?goto=findpost&pid=9179439&ptid=1258770][img]http://72891.cn/images/common/back.gif[/img][/url]
排序不是問題。ls能講講如何實(shí)現(xiàn)嗎? [/quote]
如果a[n]和b[m]是升序排列的,算法如下:
int i;
int k;
int dis;
//先找相減小于0的匹配項(xiàng)
i = 0;
k = 0;
while (i < n && k < m)
{
dis = a[i] - b[k];
if (dis >= 0)
{
k++;
continue;
}
if (dis > -1 * min)
{
k++;
}
else if (dis > -1 * max)
{
printf("%d, %d\n", a[i], b[k]);
k++;
}
else
{
i++;
}
}
//再找相減大于0的匹配項(xiàng),和上面的算法類似
i = 0;
k = 0;
while (i < n && k < m)
{
dis = a[i] - b[k];
if (dis <= 0)
{
i++;
continue;
}
if (dis < min)
{
i++;
}
else if (dis < max)
{
printf("%d, %d\n", a[i], b[k]);
i++;
}
else
{
k++;
}
} |
|