1055.抓作弊 SDNUOJ 1055

Description
在一个大试场里,有n行m列的考生,lg和众多同学正在考试,这时,有一部分考生作弊,当然,监考老师syc能发现他们。但是只有一个监考老师,他由于高度近视,只能发现与他同行同列的作弊者,而且由于监考老师年老体弱,在考试过程中无法移动。现在已知n * m个考生中谁在作弊,请帮监考老师找一个位置,可以发现最多的作弊者(监考老师可以和某个考生在同一位置)。如果监考老师的位置上的考生在作弊,那么监考老师先前后看,发现他作弊,再左右看,又发现他作弊,算做发现2个考生作弊
Input
第一行两个数n,m ,表示试场是nm的,接下来是nm的矩阵,1表示作弊,0表示不作弊。
0<n,m<=100
Output
共一行,一个数,表示最多可以发现多少作弊者。
Sample Input
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
Sample Output
10

这题卡了几个月,后来发现:sort不能对二维数组排序…想想也是,没告诉它二维数组怎么排序…

#include<cstdio>
#include<cstring>
#include<algorithm>
#include<iostream>
#include<cmath>
using namespace std;

int a[105][105];
int sum[105][105];
int ans[10005];

int main()
{
    int n, m;
    scanf("%d%d", &n, &m);
    for(int i = 0; i < n; i++)
        for(int j = 0; j < m; j++)
            scanf("%d", &a[i][j]);
    for(int i = 0; i < n; i++)
        for(int j = 0; j < m; j++)
        {
            for(int k = 0; k < m; k++)
                if(a[i][k]==1)
                    sum[i][j]++;
            for(int p = 0; p < n; p ++)
                if(a[p][j]==1)
                    sum[i][j]++;
        }
    int tot = 0;
    for(int i = 0; i < n; ++i)
        for(int j = 0; j < m; ++j)
            ans[tot++] = sum[i][j];
    sort(ans, ans + tot);
    printf("%d", ans[tot - 1]);
    return 0;
}

全部评论

相关推荐

湫湫湫不会java:1.在校经历全删了2.。这些荣誉其实也没啥用只能说,要的是好的开发者不是好好学生3.项目五六点就行了,一个亮点一俩行,xxx技术解决,xxx问题带来xxx提升。第一页学历不行,然后啥有价值的信息也没有,到第二页看到项目了,第一个项目九点,第二个项目像凑数的俩点。总体给人又臭又长,一起加油吧兄弟
点赞 评论 收藏
分享
zhch7:建议9✌️把学历加黑加粗,如果实在offer可能是觉得佬不会去
投了多少份简历才上岸
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务