美團(tuán)前端第二題答案
// meituan20190423dierti.cpp : 此文件包含 "main" 函數(shù)。程序執(zhí)行將在此處開始并結(jié)束。
//
#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
#前端##美團(tuán)#
//
#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