小编Ark*_*rma的帖子

x86实模式中的段大小

我对实际模式中的段大小有一个疑问,因为它们不能超过64K但可能小于 64K .我的问题是如何初始化这些段大小和基址?就像GDT和LDT处于保护模式一样.实模式段也可以重叠,不相交或相邻.像BIOS有一些保留区域用于特定的事情,如启动代码,视频缓冲区等装配程序需要做类似的事情吗?

x86 real-mode memory-segmentation

5
推荐指数
2
解决办法
1439
查看次数

更快的算法

我被告知编写如下算法有三个相同大小N的数组A [],B [],C [].找出所有可能的(i,j,k),使A [i] + B [j ] = C [k]的.最大允许时间复杂度为O(N ^ 2).以下是我为O(N ^ 2)编写的算法

#include<stdio.h>

#define MAX 1000

struct sum
{
        int result;
        int i;
        int j;
};

int main()
{
        struct sum sum_array[MAX];
        int n=4;
        int a[] = {4,1,2,5};
        int b[] = {1,7,6,0};
        int c[] = {11,3,8,2};
        int k;
        int i,j;
        for(i=0;i<MAX;i++)
                sum_array[i].result=-1;
        for(i=0;i<n;i++)
        {
                for(j=0;j<n;j++)
                {
                        sum_array[a[i]+b[j]].result=a[i]+b[j];
                        sum_array[a[i]+b[j]].i=i;
                        sum_array[a[i]+b[j]].j=j;
                }
        }
        for(k=0;k<n;k++)
        {
                if(sum_array[c[k]].result==c[k])
                {
                        printf("<i,j,k> = <%d,%d,%d>\n",sum_array[c[k]].i,sum_array[c[k]].j,k);
                }
        }
        return 0;
}
Run Code Online (Sandbox Code Playgroud)

我的问题是如何更快地完成它?任何O(N*logN)或更好的算法?

此致,Arka

algorithm

1
推荐指数
1
解决办法
352
查看次数

标签 统计

algorithm ×1

memory-segmentation ×1

real-mode ×1

x86 ×1