携程笔试5.7 图像识别方向 85 81 67
又一次全没A,请帅气的大佬帮忙指点~~ 没有保存题目,做过的大佬交流吧
第一题旅游区 85
n = int(input()) m = [] for _ in range(n): m.append(list(map(int,input().split()))) # n = 4 # m = [[0, 6, 0, 0, 0], [5, 8, 7, 1, 0], [0, 9, 0, 1, 0], [0, 1, 0, 0, 1]] visited = [[False]*len(m[0]) for _ in range(n)] d = [(-1,0),(1,0),(0,1),(0,-1)] def helper(i,j,m,visited,score): visited[i][j] = True if m[i][j] == 0 : return score r = score for dx,dy in d: if 0<=i+dx<n and 0<=j+dy<len(m[0]) and m[i+dx][j+dy] != 0 and not visited[i+dx][j+dy]: r = max(helper(i+dx,j+dy,m,visited,score+m[i+dx][j+dy]),r) return r res = 0 for i in range(n): for j in range(len(m[0])): visited = [[False for _ in range(len(m[0]))] for _ in range(n)] res = max(res,helper(i,j,m,visited,m[i][j])) print(res)
第二题SOHO健身 81
int climb(int n) {
if(n<0){
return -1;
}
if(n==0){
return 1;
}
int dp[n+1];
dp[0] = 1;
dp[1] = 1;
int i;
for(i=2;i<=n;i++){
dp[i] = dp[i-1] + dp[i-2];
}
int res;
res = dp[n];
for(i=0;i<=n-3;i++){
res += dp[i]*dp[n-3-i];
}
return res;
}
/******************************结束写代码******************************/
int main() {
int res;
int _n;
scanf("%d", &_n);
res = climb(_n);
printf("%d\n", res);
return 0;
} 第三题宝石 67 时间超了
k = int(input()) n = int(input()) w = list(map(int,input().split())) v = list(map(int,input().split())) # k=5 # n=3 # w=[3, 2, 2] # v=[30, 10, 10] w.insert(0,0) v.insert(0,0) from copy import deepcopy dp = [[0] * (k+1) for _ in range(2)] res = [[[] for _ in range(k+1)] for _ in range(2)] for i in range(1,n+1): for j in range(k+1): if i % 2 == 1: if j < w[i]: dp[1][j] = dp[0][j] res[1][j] = deepcopy(res[0][j]) else: if dp[0][j-w[i]]+v[i] > dp[0][j]: dp[1][j] = dp[0][j-w[i]]+v[i] res[1][j] = deepcopy(res[0][j-w[i]]) res[1][j].append(i) else: dp[1][j] = dp[0][j] res[1][j] = deepcopy(res[0][j]) else: if j < w[i]: dp[0][j] = dp[1][j] res[0][j] = deepcopy(res[1][j]) else: if dp[1][j - w[i]] + v[i] > dp[1][j]: dp[0][j] = dp[1][j - w[i]] + v[i] res[0][j] = deepcopy(res[1][j - w[i]]) res[0][j].append(i) else: dp[0][j] = dp[1][j] res[0][j] = deepcopy(res[1][j]) if n % 2 == 1: r = res[-1][-1] else: r = res[0][-1] # r = res[-1][-1] r.sort() r.reverse() for i in r: print(i)
