软题库 移动APP 扫码下载APP 随时随地移动学习 培训课程
当前位置:信管网 >> 在线考试中心 >> 信息系统项目管理师题库 >> 试题查看
试卷名称 2005年上半年程序员考试下午真题试题(案例分析)
考试中心《2005年上半年程序员考试下午真题试题(案例分析)》在线考试
试卷年份2005年上半年
试题题型【分析简答题】
试题内容

【说明】
假设一个剧场有N*N个座位,顾客买票时可以提出任意有效的座号请求。下面用二维数组a[N][N]模拟剧场中的座位,a[i][j]等于0表示第i排第j列(0≤I , j≤N-1)的票尚未售出。
函数int Find ( int a[][N] , int R , int *row , int *col )的功能是:在部分票已售出的情况下,找出剧场中的R*R个空座位,要求这些座位的排列形成一个正方形。若找到满足要求的一个座位排列,则函数返回1,并算出该正方形左上角的行、列号;若未找到,返回0;
例如,一个7×7个座位的剧场如下图(a)所示,已售出部分座位的剧场如下图(b)所示,图中阴影部分表示已售出的座位,从图(b)中找出3×3正方形空座位如图(c)中斜线区所示。
 
【函数】
int Find ( int a[][N] , int R , int *row , int *col )
{  int i,j,k,c,t; int FOUND = 0;
for ( i=0 ; !FOUND && i     __(1)__ ;
while ( j     for ( k=0; ___(2)___ && a[i][j+k] = = 0; k++);/* 查找第i排连续的R个空座位 */
if ( k >=R ){ /* 查找第i排连续的R个空座位 */
for ( c=0 ; c < R ; c++ ) { /* 查找其余的R*(R-1)个座位 */
for ( t = 1 ; t < R ; t++ )
if (a[ __(3)__ ] [j+c] !=0 ) break;
if ( t   } /* for */
if ( ___(4)___ ) FOUND =1;
} /* if */
___(5)___ ;
} /* while */
} /* for i */
if ( FOUND ) {
*row = i-1 ; *col = j-1; /* 计算正方形区域的左上角坐标*/
return 1;
}
return 0;
}


相关试题

推荐文章
合作网站内容