解析:计算机常识问题,总线是一种内部结构,它是CPU、内存、输入、输出设备传递信息的公用通道,主机的各个部件通过总线相连接,外部设备通过相应的接口电路再与总线相连接,从而形成了计算机硬件系统。
解析:无符号八位二进制数的表示范围为0~2的八次方-1,即0~255,因此选项 296与选项 256均不能表示。
解析:在2的n次方-1个元素中采用折半搜索,最大比较次数为 n次。而2的六次方-1=63<100<127=2的七次方-1
解析:m个相同的球放入n个相同的盒子(m ≥ n),可以有空盒时的放法种数等于将m分解为n个、( m - 1 ) 个、( m - 2 ) 个…2个、1 个数的和的所有种数之和。
将8分解为一个数:8,共一种
将8分解为两个数:1+7,2+6,3+5,4+5,共四种
将8分解为三个数:1+1+6,1+2+5,1+3+4,2+2+4,2+3+3,共五种
将8分解为四个数:1+1+1+5,1+1+2+4,1+1+3+3,1+2+2+3,2+2+2+2,共五种
将8分解为五个数:1+1+1+1+4,1+1+1+2+3,1+1+2+2+2,共三种
所以一共十八种
解析:模拟递归调用如下:
因为输入为7所以答案为-11
解析:本题可以采用分析程序功能的方法,此程序的功能是:读入一个字符串,将字符串里的所有小写字母转化为相应的大写字母后输出。注意细心不要写错字母,漏掉标点符号以及空格。
解析:此题可以通过直接模拟完成,不过细节比较多容易出错。经过简单的分析或模拟前几步就可以发现,此程序的功能就是用筛法求 nn 以内的质数,输出质数个数。而 30以内的质数有 2, 3, 4, 5, 11, 13, 17, 19, 23, 29共 10个。
#include <iostream>
using namespace std;
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()
{
cin >> m >> n;
for(i = 1; i <= m; i++)
for(j = 1; j <= n; j++)
cin >> matrix[i][j];
ans = matrix ①;
for(i = 1; i <= m; i++)
②
for(i = 1; i <= m; i++)
for(j = 1; j <= n; j++)
rowsum[i][j] = ③;
for(first = 1; first <= n; first++)
for(last = first; last <= n; last++)
{
④;
for(i = 1; i <= m; i++)
{
area += ⑤;
if(area > ans)
ans = area;
if(area < 0)
area = 0;
}
}
cout << ans << endl;
return 0;
}
解析:利用前缀和的思想,计算出矩阵第i行前j列的和rowsum[i][j]。枚举所有列的组合,求出子矩阵和的最大值。
空①,初始化ans,让其等于矩阵第一行第一列的值matrix[1][1],所以应填入[1][1]
空②,初始化每行前缀和数组的第0项,将其置为0,用于之后计算前缀和,所以应填入rowsum[i][0]=0
空③,计算第i行的前缀和,所以应填入rowsum[i][j-1]+matrix[i][j]
空④,初始化area为0 00,所以应填入area=0
空⑤,使用前缀和数组计算first列到last列的和,rowsum[i][last]-rowsum[i][first-1]。