NOIP2014 普及组 第1轮 初赛 四.完善程序

NOIP 2014 普及组初赛试题4.1(数字删除)

/*
**NOIP 2014 普及组初赛试题4.1(数字删除)**
下面程序的功能是将字符串中的数字字符删除后输出。
请填空。(每空3分,共12分)
*/
#include <iostream>
using namespace std;
int delnum( char *s )
{
	int i, j;
	j = 0;
	for ( i = 0; s[i] != '\0'; i++ )
		if ( s[i] < '0'   ①  s[i] > '9' )
		{
			s[j] = s[i];
			②;
		}
	return(③);
}


const int SIZE = 30;
int main()
{
	char s[SIZE];
	int len, i;
	cin.getline( s, sizeof(s) );
	len = delnum( s );
	for ( i = 0; i < len; i++ )
		cout << ④;
	cout << endl;
	return(0);
}
/*
1.正确答案: \|\|

2.正确答案: j++ / j=j+1 / ++j

3.正确答案: j

4.正确答案: s[i]
*/

NOIP2014 普及组初赛试题 4.2阅读程序写结果:(最大子矩阵和)

/*
NOIP2014 普及组初赛试题 4.2阅读程序写结果:(最大子矩阵和)

给出m行n列的整数矩阵,
求最大的子矩阵和(子矩阵不能为空)。
输入第一行包含两个整数m和n,
即矩阵的行数和列数。之后m行,
每行n个整数,描述整个矩阵。
程序最终输出最大的子矩阵和。
(最后一空4分,其余3分,共16分)
比如在如下这个矩阵中:

4  4  
0 -2 -7 0  
9 2 -6 2  
-4 1 -4 1  
-1 8 0 -2  
拥有最大和的子矩阵为:

 9 2  
-4 1  
-1 8  
其和为15

3  3  
-2 10 20 
-1 100 -2 
0 -2 -3
最大子矩阵和为128

4  4  
0 -2 -9 -9 
-9 11 5 7 
-4 -3 -7 -6 
-1  7  7  5 
最大子矩阵和为26

分析:

先对每一行计算前缀和数组,用于方便地计算每一行指定段的元素之和。

然后枚举子矩阵的起始列first、结束列last。

然后在这个区域计算列数为last-first+1的所有子矩阵的最大和。

(计算过程类似一维矩阵的最大子段和。)

https://www.cnblogs.com/huashanqingzhu/p/6755084.html
https://blog.csdn.net/weixin_30517001/article/details/96823567
https://blog.csdn.net/weixin_33947521/article/details/89933912

https://zhuanlan.zhihu.com/p/84447327
*/
#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);
}
/*
1.正确答案: [1][1]

2.正确答案: rowsum[i][0]=0

3.正确答案: rowsum[i][j-1]+matrix[i][j]

4.正确答案: area=0

5.正确答案: rowsum[i][last]-rowsum[i][first-1]
*/




CSP-J1 CSP-S1 第1轮 初赛 相关的在线测试网站

洛谷有题

试题列表 - 洛谷有题

信息学奥赛普及组初赛试题评测题库

信息学奥赛一本通(C++版)在线评测系统

信息学奥赛提高组初赛试题评测题库

信息学奥赛一本通(C++版)在线评测系统

有道小图灵 信息学

信息学奥赛-NOIP-少儿编程培训-有道小图灵

信奥题库

信奥题库 - OITIKU.com

牛客网初赛

比赛历年真题_CSP-J入门组/CSP-S提高组/NOI/省选/USACO/信息学教材_牛客竞赛OJ

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

dllglvzhenfeng

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值