St16666 2024-08-15 14:17 采纳率: 37.5%
浏览 4
已结题

阅读程序2题C++ 求解

1.【NOIP2012】

01 #include <iostream>
02 using namespace std;
03 int n,i,j,a[100][100];
04 int solve(int x,int y) {
05 int u,v;
06 if(x==n) return a[x][y];
07 u=solve(x+1,y);
08 v=solve(x+1,y+1);
09 if(u>v) 
10 return a[x][y]+u;
11 else 
12 return a[x][y]+v;
13 }
14 int main() {
15 cin>>n;
16 for(i=1; i<=n; i++)
17 for(j=1; j<=i; j++) cin>>a[i][j];
18 cout<<solve(1,1)<<endl;
19 return 0;
20 }

判断题
(1)该程序读入 n+n*n 个整数。 ( )
(2)该程序能正常运行。 ( )
(3)输出结果均为整数。 ( )
(4)该程序有多组测试数据。 ( )
选择题
(5)若输入为:
5
2
-1 4
2 -1 -2
-1 6 4 0
3 2 -1 5 8
输入结果为( )
 A. 11 B. 12 C. 13 D. 14

2.【NOIP2013】

01 #include <iostream>
02 #include <cstring>
03 using namespace std;
04 const int SIZE = 100
05 int n, m, p, count, a[SIZE][SIZE];
06
07 void colour(int x, int y) {
08 count++;
09 a[x][y] = 1;
10 if ((x > 1) && (a[x - 1][y] == 0)) colour(x - 1, y);
11 if ((y > 1) && (a[x][y - 1] == 0)) colour(x, y - 1);
12 if ((x < n) && (a[x + 1][y] == 0)) colour(x + 1, y);
13 if ((y < m) && (a[x][y + 1] == 0)) colour(x, y + 1);
14 }
15
16 int main() {
17 int i, j, x, y, ans;
18 memset(a, 0, sizeof(a));
19 cin >> n >> m >> p;
20 for (i = 1; i <= p; i++) {
21 cin >> x >> y;
22 a[x][y] = 1;
23 }
24 ans = 0;
25 for (i = 1; i <= n; i++)
26 for (j = 1; j <= m; j++)
27 if (a[i][j] == 0) {
28 count = 0;
29 colour(i, j);
30 if (ans < count) ans = count;
31 }
32 cout << ans << endl;
33 return 0;
34 }

判断题
(1)由于没有赋初值,该程序会运行错误。 ( )
(2)如果将第 18 行去掉,程序结果会发生改变。 ( )
(3)如果将第 30 行的 ans<count 改成 ans<=count,输出结果会发生改变。 ( )
(4)该程序有可能输出 114514。 ( )
选择题
(5)若输入为:
6 5 9
1 4
2 3
2 4
3 2
4 1
4 3
4 5
5 4
6 4
则输出结果为( )
 A. 114514 B. 1919810 C. 7 D. 86)该程序的时间复杂度为( )
 A. O(1) B. O(n) C. O(n*m) D. O(2n)
  • 写回答

2条回答 默认 最新

  • 一直免费一直爽 2024-08-15 14:18
    关注

    以下回复参考:皆我百晓生券券喵儿等免费微信小程序作答:

    1. 判断题 (1)错误。程序读入的整数数量为 n+n*(n+1)/2,而不是 n+n*n。 (2)正确。程序能正常运行。 (3)正确。输出结果均为整数。 (4)错误。该程序只有一组测试数据。

    选择题 (5)解答过程:根据输入的数据,我们可以画出一个6x5的矩阵,然后按照题目要求进行计算。最后得到的结果为13,所以答案为C。

    1. 判断题 (1)错误。程序已经对数组a进行了赋初值操作。 (2)正确。如果将第18行去掉,程序结果会发生改变。 (3)错误。如果将第30行的 ans<count 改成 ans<=count,输出结果不会发生改变。 (4)错误。该程序不可能输出114514。

    选择题 (5)解答过程:根据输入的数据,我们可以画出一个6x5的矩阵,然后按照题目要求进行计算。最后得到的结果为7,所以答案为C。

    (6)解答过程:该程序的时间复杂度为O(n*m),因为需要遍历整个矩阵进行计算。所以答案为C。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 8月15日
  • 已采纳回答 8月15日
  • 修改了问题 8月15日
  • 创建了问题 8月15日

悬赏问题

  • ¥15 osm下载到arcgis出错
  • ¥15 Dell g15 每次打开eiq portal后3分钟内自动退出
  • ¥200 使用python编写程序,采用socket方式获取网页实时刷新的数据,能定时print()出来就行。
  • ¥15 matlab如何根据图片中的公式绘制e和v的曲线图
  • ¥15 我想用Python(Django)+Vue搭建一个用户登录界面,但是在运行npm run serve时报错了如何解决?
  • ¥15 QQ邮箱过期怎么恢复?
  • ¥15 登录他人的vue项目显示服务器错误
  • ¥15 (标签-android|关键词-app)
  • ¥15 comsol仿真压阻传感器
  • ¥15 Python线性规划函数optimize.linprog求解为整数