美团前端第二题答案

// meituan20190423dierti.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//

#include "pch.h"
#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
#include <numeric>
#include <algorithm>
#include <unordered_map>
#include <math.h>
using namespace std;
vector<vector<vector<int> > > dun;
vector<vector<vector<int> > > flag;
int n = 0;
int res = 0;
int core(int maxx, int maxy, int maxz, int sum, int p) {
    if (maxx < 0 || maxy < 0 || maxz < 0 || maxx >= n || maxy >= n || maxz >= n || flag[maxx][maxy][maxz] == 1 || p <= dun[maxx][maxy][maxz]) {
        if (res < sum) {
            res = sum;
        }
        return 0;
    }
    flag[maxx][maxy][maxz] = 1;

    core(maxx + 1, maxy, maxz, sum + dun[maxx][maxy][maxz], dun[maxx][maxy][maxz]);
    core(maxx - 1, maxy, maxz, sum + dun[maxx][maxy][maxz], dun[maxx][maxy][maxz]);
    core(maxx, maxy + 1, maxz, sum + dun[maxx][maxy][maxz], dun[maxx][maxy][maxz]);
    core(maxx, maxy - 1, maxz, sum + dun[maxx][maxy][maxz], dun[maxx][maxy][maxz]);
    core(maxx, maxy, maxz + 1, sum + dun[maxx][maxy][maxz], dun[maxx][maxy][maxz]);
    core(maxx, maxy, maxz - 1, sum + dun[maxx][maxy][maxz], dun[maxx][maxy][maxz]);
    flag[maxx][maxy][maxz] = 0;

}
int main()
{
    cin >> n;
    dun.resize(n, vector<vector<int> >(n, vector<int>(n, 0)));
    flag.resize(n, vector<vector<int> >(n, vector<int>(n, 0)));
    int maxx, maxy, maxz;
    int maxp = 0;
    for (int i = 0; i < n; i++)
    {
        for (int j = 0; j < n; j++)
        {
            for (int k = 0; k < n; k++) {
                int x, y, z, p;
                cin >> x >> y >> z >> p;
                dun[x][y][z] = p;
                if (maxp < p) {
                    maxx = x;
                    maxy = y;
                    maxz = z;
                    maxp = p;
                }
            }
        }
    }
    core(maxx, maxy, maxz, 0, INT_MAX);
    cout << res << endl;
    //system("pause");
    return 0;
}



3
0 0 0 1
0 0 1 2
0 0 2 3
0 1 0 4
0 1 1 5
0 1 2 6
0 2 0 7
0 2 1 8
0 2 2 9
1 0 0 10
1 0 1 11
1 0 2 12
1 1 0 13
1 1 1 14
1 1 2 13
1 2 0 12
1 2 1 11
1 2 2 10
2 0 0 9
2 0 1 8
2 0 2 7
2 1 0 6
2 1 1 5
2 1 2 4
2 2 0 3
2 2 1 2
2 2 2 1
89

#前端##美团#
全部评论
美团第一题 83 啥情况啊 while( line = read_line() ){ var n = parseInt(line); function fib(n){ if(n <=1 ){ return 1; }else{ return fib(n-1) + fib(n-2); }     }     var a = fib(n); print(a) }
点赞 回复 分享
发布于 2019-04-23 21:29
估计爆栈了
点赞 回复 分享
发布于 2019-04-23 21:31
要优化一下拿数组存一下中间结果
点赞 回复 分享
发布于 2019-04-23 21:32
我用动态优化也不行啊
点赞 回复 分享
发布于 2019-04-23 21:34
#include <iostream> #include <string> #include <vector> #include <algorithm> #include <numeric> #include <algorithm> #include <unordered_map> #include <math.h> using namespace std; int main() {     int N;     while (cin >> N) {         vector<int> dp(N + 1);         dp[0] = 1; dp[1] = 1;         for (int i = 2; i <= N; ++i) {             dp[i] = dp[i - 1] + dp[i - 2];         }         cout << dp[N] << endl;     }     return 0; }
点赞 回复 分享
发布于 2019-04-23 21:35

相关推荐

lingo12:1.最好加个业务项目,大部分面试官工作以后会更偏重业务 2.实习部分描述一般般,可能hr看到会觉得你产出不够不给你过简历 3.蓝桥杯这些大部分人都有的,不如不写,反而减分项。
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务