正在载入在线练习界面,本页内容可直接阅读…
AK CSP › NOIP 提高 2014 第一轮真题 › 第 32 题
NOIP 提高 2014 第一轮 第 32 题:完善程序(双栈模拟数组)第 1 空
题目
2.(最大矩阵和)给出 $M$ 行 $N$ 列的整数矩阵,就最大的子矩阵和(子矩阵不能为空)。
输入第一行包含两个整数 $M$ 和 $N$,即矩阵的行数和列数。之后 $M$ 行,每行 $N$ 个整数,描述整个矩阵。程序最终输出最大的子矩阵和。(第一空 $2$ 分,其余 $3$ 分,共 $14$ 分)
#include <stdio.h>
const int SIZE=100;
int matrix[SIZE+1][SIZE+1];
int rowsum[SIZE+1][SIZE+1]; //rowsum[i][j]记录第i行前j个数的和
int m,n,i,j,first,last,area,ans;
int main(){
scanf(“%d %d”,&m,&n);
for(i=1;i<=m;i++)
for(j=1;j<=n;j++)
scanf(“%d”,&matrix[i][j]);
ans=matrix (1) ;
for(i=1;i<=m;i++)
(2) ;
for(i=1;i<=m;i++)
for(j=1;j<=n;j++)
rowsum[i][j]= (3) ;
for(first=1;first<=n;first++)
for(last=first;last<=n;last++){
(4) ;
for(i=1;i<=m;i++){
area+= (5) ;
if(area>ans)
ans=area;
if(area<0)
area=0;
}
}
printf(“%d\n”,ans);
return 0;
}本小题
第 1 空应填( )
答案
[1][1]
题解
考点定位
最大子矩阵和的初始化与填空范围。
解题过程
为了正确处理所有元素均为负数的矩阵,ans应初始化为一个实际元素,完整语句为:
``cpp ans = matrix[1][1]; ``
题面已经写出了ans=matrix,因此第①空只填下标部分。
答案:[1][1]。
易错提醒
不要重复填写题面已有的matrix,否则拼接后的语句无法编译。
真题版权归 CCF 所有,本站仅用于非商业教学用途。页面加载后可直接在线作答,作答记录保存在本浏览器或账号中。 京ICP备2026056990号-1
京公网安备11010502062986号