美团前端第二题答案
// 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;
89
#前端##美团#
//
#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