问答题


阅读以下技术说明和问题模型图,根据要求回答问题1和问题2。
【说明】
某大学城图书馆需要在无线阅览厅的某些位置上放置无线接入点AP(Access Poin)。假设每个无线AP覆盖范围的半径是6米,因此必须使得每台笔记本电脑上的无线网卡到某个无线AP的直线距离不超过6米。为了简化问题,假设所有无线网卡在同一直线上,并且无线AP沿该直线放置。该问题可以建模为如图1-16所示,其中直线表示无线网卡所在的直线,实心正方形表示无线网卡。现利用贪心策略实现用尽可能少的无线AP覆盖所有的无线网卡。


实现贪心算法的流程如图1-17所示。其中,①d[i](1≤i≤N)表示第i张无线网卡到通道A端的距离,N表示无线网卡的总数,无线网卡的编号按照无线网卡到通道A端的距离从小到大进行编号;②s[k]表示第k(k≥1)个无线AP到通道A端的距离。算法结束后k的值为无线AP的总数。

【问题1】
请填补图1-17流程图中(1)-(4)空缺处的内容。

【参考答案】

(1)k=0
(2)j<=N或其等价形式
(3)k=k+1或其等价形式
(4)d[i]+6或其等......

(↓↓↓ 点击下方‘点击查看答案’看完整答案 ↓↓↓)
热门 试题

问答题
【说明】喜迎2008年北京奥运会!以下【C程序】能将一个给定汉字(例如,奥运会的“会”字)的点阵逆时针旋转90°,并输出旋转前后的点阵数据及字形。图1-15是汉字“会”字的16×16点阵字形,用数字0表示空白位置,用数字1表示非空白位置,“会”字的第1行即可表示成如下的{0,1}序列:0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0如果把它看做一个字的16个位,“会”字的第1行可以用十六进制数0100来表示。同理,“会”字的第2行可以用十六进制数0240表示,第3行可以用十六进制数0420表示……依此类推,用16个双字节整型数即可存放一个汉字点阵字形。“会”字的点阵数据及字形如图1-15的左半部分所示。将一个汉字逆时针旋转90°,就是把该汉字点阵的最右列作为旋转后新点阵的第1行,次最右列作为旋转后新点阵的第2行……依此类推来形成一个旋转后的点阵字形。图1-15的右半部分就是将“会”字逆时针旋转90°后的点阵数据和字形(提示:读者可将书本顺时针旋转90°,以查看旋转90°后的点阵字形)。在【C程序】中,数组old存放着“会”字的16个双字节整型点阵数据。函数turnleft能将该点阵数据逆时针旋转90°,旋转后的点阵数据存放在数组new中。函数display能将旋转前后的点阵数据加以编辑,用字符“.”表示值为0的位,用字符“x”表示值为1的位,从而将旋转前后的点阵按行输出其十六进制的数据和字形,如图1-15所示。【C程序】#include <stdio.h>#define EMPTY ’.’#define NONEMPTY ’x’#define LEFT 0#define RIGHT 1main (){ static unsigned old[16]={ 0x0100,0x0240,0x0420,0x0810,0x1004,0x23c2,0x4001,0x8ff8,0x0100,0x0200,0x0400,0x0800,0xl000,0x2004,0x7ffe,0x0001};unsigned new[16];turnleft (old, new);display (old,new);}turnleft (old,new)unsigned old[],new[];{ int row, k;for (row=0;row<16;row++)for ( (1) ;k<16;k++)new[row]|=((old[k]>> (2) )&1) << (3) ;}display (old, new)unsigned *old,*new;{ char out[2] [17],letter[2];int row, col;letter[O] = EMPTY;letter[1] = NONEMPTY;out[LEFT] [16]=out[RIGHT] [16]= (4) ;for (row = 0;row<16;row++,old++,new++){ for (col = 0;co1<16;++col){ out[LEFT] [col] = letter[ ( (5) ) &1];out[RIGHT] [col] = letter[ ( (6) ) &1];}printf( n %4x %s ,*old,&out[LEFT] [0]);printf( %4x %s ,*new,&out[RIGHT] [0]);}}