携程笔试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)