360笔试

一个编程题目: 
N行M列矩阵,A[i][j]表示第i行j列位置上放置的方块数,最终组成一个立方体,求这个立方体的表面积。 
举例 输入 
2 2 
2 1 
1 1 
说明:N=2 M=2, 然后是A[i][j]

下面是我的代码,就纳闷了,为啥我在本地上验证没问题,网上通过率却只有18%,难道是赛马网的问题?  
#include <iostream>
#include <cstring>
#include <vector>
#include <cmath>
#include <algorithm>
#include <set>

using namespace std;

int main()
{
    int n, m;
    cin >> n >> m;
    int A[1002][1002] ={0};
    memset(A, 0, sizeof(A));
    int maxH=0; //最大高度

    for(int i=1; i<=n; ++i)
    {
        for(int j=1; j<=m; ++j)
        {
            cin >> A[i][j];
            if( A[i][j] >= maxH)
                maxH = A[i][j];

        }
    }

    //一共六个方向
    int a = 2 * m *n; //上下面
    int res = 0;  // 前后面. 左右面
    //第一层
    for(int k=0; k<maxH; ++k)
    {
        for(int i=1; i<=n; ++i)
        {
            for(int j=1; j<=m; ++j)
            {
                if(A[i][j] - k)  //说明有方块
                {
                    if(A[i][j+1]-k <= 0)
                        res ++;
                    if(A[i][j-1]-k <= 0)
                        res++;
                    if(A[i+1][j]-k <= 0)
                        res++;
                    if(A[i-1][j]-k <= 0)
                        res++;
                }
            }
        }
    }
    res += a;

    cout << res << endl;

    return 0;

}


#360公司##笔试题目#
全部评论
我就说没考虑凹槽,18%,到最后才反应过来
点赞 回复 分享
发布于 2019-08-15 21:18
#include <iostream> #include <vector> #include <unordered_set> using namespace std; int main() {     int m,n;     cin>>n>>m;     vector<vector<int>> v(n, vector<int>(m,0));     for (int i = 0; i < n; ++i) {         for (int j = 0; j < m; ++j) {             cin>>v[i][j];         }     }     long long int sum = 0;     for (int i = 0; i < n; ++i) {         for (int j = 0; j < m; ++j) {             if(v[i][j]>0) {                 sum += 6;                 if (v[i][j] > 1) {                     sum += 4 * (v[i][j] - 1);                 }                 if (i>0){                     sum -= 2 * min(v[i][j], v[i-1][j]);                 }                 if (j>0){                     sum -= 2 * min(v[i][j], v[i][j-1]);                 }             }         }     }     cout<<sum<<endl;     return 0; } 这个代码ac了~
点赞 回复 分享
发布于 2019-08-15 21:14

相关推荐

04-29 22:35
门头沟学院 Java
牛友说改了名字能收到offer:旧图新发查看图片
点赞 评论 收藏
分享
05-12 22:16
已编辑
北京邮电大学 研发工程师
牛客302360988号:0offer+1 滴滴都不给我面 佬没投鹅吗,鹅应该很喜欢北邮吧
投递美团等公司8个岗位
点赞 评论 收藏
分享
评论
2
4
分享

创作者周榜

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