2434: 【区赛】[慈溪2013]统计方格

题目描述

给出一张 n 行 m 列仅由黑白方格组成的黑白图片(行从上到下 1 到 n 编号,列从左到右 1 到 m 编号)。如下图是一张由 17 行 18 列方格构成的黑白图片,图片中的任意一个方格要么是白色,要么是黑色。

2434: 【区赛】[慈溪2013]统计方格_第1张图片

仔细观察这张黑白图片我们可以发现,图中共有 60 个黑色方格(连续的黑色方格不能算成一个),黑色方格最多的行是第 3 行和第 17 行,都为 6 个,黑色方格最少的行是第 5行、第 6 行、第 9 行、第 12 行、第 13 行、第 15 行,都为 2 个。

请编写程序统计黑白图片中黑色方格的总数,黑色方格数目最多的行的行号及黑色方格数目最少的行的行号。

输入

输入共 n+1 行。 

第 1 行是两个整数 n 和 m(1≤n,  m≤100),分别表示黑白图片的行数和列数,两个整数间用空格分隔。 

第 2 行到第 n+1 行,描述了图片中每个方格的颜色,黑色用整数 0 表示,白色用整数 1表示。每行为 m 个用空格分隔的 0 或 1,其中第 i+1 行第 j 列的整数为 Aij(1≤i≤n,1≤j≤m,Aij=0 或者 Aij=1),表示图片第 i 行第 j 列位置的方格颜色。 

输出

输出共 1 行,包含 3 个整数。分别表示输入文件所表示的黑白图片中黑色方格的总数,黑色方格数目最多的行的行号及黑色方格数目最少的行的行号。注意,如果黑色方格最多的行有多行一样,则输出行号最小的,同样,如果黑色方格最少的行有多行一样,也是输出行号最小的。

样例输入

6 6
1 1 1 1 1 1
1 0 1 0 0 1
1 0 1 1 0 1
1 0 1 0 1 1
1 0 1 0 0 1
1 1 1 1 1 1

样例输出

10 2 1

提示

【样例解释】 
输入的黑白图片的大小为 6 行 6 列,第 1 行 0 个黑色方格,第 2 行 3 个黑色方格,第 3 行 2 个黑色方格,第 4 行 2 个黑色方格,第 5 行 3 个黑色方格,第 6 行 0 个黑色方格。所以 总共有 10 个黑色方格,黑色方格最多且行号最小的行是第 2 行,黑色方格最少且行号最小 的行是第 1 行。 

【数据范围约定】

所有的输入数据保证 1≤n, m≤100。

来源

慈溪竞赛-2013 

C++:

#include
using namespace std;
int main(){
	int a,b,hei=0,hmax=1,hmin=1,hang[1005]={};
	cin>>a>>b;
	char c[1005][1005];
	for(int i=1;i<=a;i++){
		for(int j=1;j<=b;j++){
			cin>>c[i][j];
			if(c[i][j]=='0'){
				hei++;
				hang[i]++;
			}
		}
		if(hang[i]>hang[hmax]){
			hmax=i;
		}
		if(hang[i]

你可能感兴趣的:(C++,C3,算法,c++)