CSU-1779(暴力)

题目:http://acm.csu.edu.cn/csuoj/problemset/problem?pid=1779
思路:错误的算法找位置没什么好说的,然而正确的算法不需要找位置了,暴力找下最大值就好了,但是我却以为找正确位置也行,然而正确的位置可能有多个。
举个栗子:n = 5,m = 5,错误的找到(4,4 ),正确的有(2,2)和(4,4),如果取最小的正确位置的话结果(4,4 ) != (2,2)了,strong?当然是weak
ps:最近思维过于僵化,写水题一定要稳啊

#include <bits/stdc++.h>
using namespace std;

const int N = 505;
int a[N][N],row[N],col[N];

int main()
{
    int n,m,cnt = 0;
    while(~scanf("%d%d",&n,&m))
    {
        memset(row,0,sizeof(row));
        memset(col,0,sizeof(col));
        for(int i = 1;i <= n;i++)
            for(int j = 1;j <= m;j++)
                scanf("%d",&a[i][j]);
        printf("Case %d: ",++cnt);
        int mr = 1,mc = 1,maxr = 0,maxc = 0;
        int maxn = 0,m1 = 1,m2 = 1;
        for(int i = 1;i <= n;i++)
        {
            for(int j = 1;j <= m;j++)
            {
                row[i] += a[i][j];
            }
            //printf("%d\n",row[i]);
            if(maxr < row[i])
            {
                maxr = row[i];
                mr = i;
            }
        }

        for(int j = 1;j <= m;j++)
        {
            for(int i = 1;i <= n;i++)
            {
                col[j] += a[i][j];
            }
            //printf("%d\n",col[j]);
            if(maxc < col[j])
            {
                maxc  = col[j];
                mc = j;
            }
        }



        //printf("\n%d %d\n",mr,mc);
         for(int i = 1;i <= n;i++)
        {
            for(int j = 1;j <= m;j++)
            {
                if(maxn < row[i]+col[j]-a[i][j])
                {
                    maxn = row[i]+col[j]-a[i][j];
                    m1 = i;m2 = j;
                }
            }
        }
        //printf("%d %d\n",m1,m2);
        if(maxr + maxc - a[mr][mc] == maxn)//if(m1 == mr && m2 == mc)
            printf("Weak\n");
        else
            printf("Strong\n");
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值