不是VIP会员,不能显示答案

题目解答

题目:
【作弊】 (3+3+3+3+3=15 分)
题目描述: 在一个大试场里, 有 n 行 m 列的考生, 笑笑和众多的同学正在考试,这时,有一部分考生作弊,当然,监考老师能发现他们。但是只有一个监考老师,他由于高度近视,只能发现与他同行同列的作弊者,而且由于监考老师年老体弱,在考试过程中无法移动。 现在已知n*m 个考生谁在作弊,请帮监考老师找一个位置,可以发现最多的作弊者(监考老师可以和某个考生同一位置) 。如果监考老师的位置上考生作弊,那么监考老师前后看,发现他在作弊,再左右看,又发现他作弊,算做发现两个作弊考生。
数据范围:
对于 50%的数据, 0<n、 m<=10, 对于 100%的数据, 0<n、m<=100,所有数据都在 longint 范围内。
样例说明: 监考老师在最中间,那个位置上的作弊者算作两 次。
输入格式:cheat.in
第一行两个数 n,m,表示试场是 n*m的,接下来的是 n*m 的矩阵,1 表示作弊,0 表示不作弊。
输出格式:cheat.out
共一行,一个数,表示最多可以发现多少作弊者。
样式输入:
5_5
0_0_1_0_0
0_0_1_0_0
1_1_1_1_1
0_0_1_0_0
0_0_1_0_0
样式输入:
10
Program test_2013_7; 
Var n,m,i,j,k,d,max:longint; 
   s:array[1..100,1..100] of integer; 
begin
assing(input,’cheat.in’);
reset(input); 
assing(output,’cheat.out’); 
rewrite(output);
max:=0; 
readln(n,m); 
for i:=1 to n do
begin
  for j:=1 to m do
   read( a[i,j] ); 
  readln; 
end; 
   For  for i:=1 to n do 
   begin
     for j:=1 to n do 
      begin 
        d:=0 ;
      For  k:=1 to n  do 
      If (s[k,j]=1) then inc(d); 
  For k:=1 to m do 
      If ( s[i,k]=1 ) then inc(d); 
      if ( d>max ) then max:=d; 
 end
 end; 
 writeln(max); 
 close(input); 
 close(output); 
 end.
考点:
分析:
解答:
评论:
老师: