搜狐笔试

 import java.text.*;
import java.util.*;


public class Main{          public static void main(String[]ags){         Scanner in = new Scanner(System.in);         String a=in.nextLine();         System.out.println(simplifyPath(a));     }          public static String simplifyPath(String path) {         if(path.length() == 0){             return path;         }                  String[] splits = path.split("/");         LinkedList<String> stack = new LinkedList<String>();         for (String s : splits) {             if(s.length()==0 || s.equals(".")){                 continue;             }else if(s.equals("..")){                 if(!stack.isEmpty()){                     stack.pop();                 }             }else{                 stack.push(s);             }         }                  if(stack.isEmpty()){             stack.push("");         }         String ret = "";         while(!stack.isEmpty()){             ret += "/" + stack.removeLast();         }                  return ret;     }
}
第一题#搜狐#
全部评论
#include <iostream> #include <vector> #include <string> #include <list> #include <queue> #include <unordered_map> #include <algorithm> using namespace std; long long a[10010]; long long b[10010]; long long dp[10010][10010]; int main() { int n; long long sum = 0; cin >> n; for (int i = 0; i < n; i++) { cin >> a[i]; b[n - 1 - i] = a[i]; sum += a[i]; } for (int i = 1; i <= n; i++) { for (int j = 1; j <= n; j++) { if (a[i - 1] == b[j - 1]) dp[i][j] = dp[i - 1][j - 1] + a[i - 1]; else dp[i][j] = std::max(dp[i][j - 1], dp[i - 1][j]); } } cout << sum + sum - dp[n][n] << endl; return 0; } 第二题dp,AC
点赞 回复 分享
发布于 2017-09-17 20:26
大佬第二题怎么做
点赞 回复 分享
发布于 2017-09-17 20:18
第二题呢
点赞 回复 分享
发布于 2017-09-17 20:19
第二题用dp 可以ac
点赞 回复 分享
发布于 2017-09-17 20:19
if __name__ == "__main__": # 读取第一行的n n = int(sys.stdin.readline().strip()) line = sys.stdin.readline().strip() values = list(map(int, line.split())) ans = [[0 for i in range(n)] for j in range(n)] for i in range(1,n+1): for j in range(n-i+1): if i==1: ans[j][j+i-1]=values[j] continue else: if values[j]==values[j+i-1]: if i>2: ans[j][j+i-1] = 2*values[j] + ans[j+1][j+i-2] else: ans[j][j + i - 1] = 2 * values[j] else: ans[j][j + i - 1] = min(2*values[j]+ans[j+1][j+i-1], 2*values[j+i-1]+ans[j][j+i-2]) print(ans[0][n-1])
点赞 回复 分享
发布于 2017-09-17 20:42
用简单循环就可以AC了
点赞 回复 分享
发布于 2017-09-17 20:43

相关推荐

头像
10-09 19:35
门头沟学院 Java
洛必不可达:java的竞争激烈程度是其他任何岗位的10到20倍
点赞 评论 收藏
分享
喜欢走神的孤勇者练习时长两年半:池是池,发是发,我曾池,我现黑
点赞 评论 收藏
分享
头像
11-27 14:28
长沙理工大学
刷算法真的是提升代码能力最快的方法吗?&nbsp;刷算法真的是提升代码能力最快的方法吗?
牛牛不会牛泪:看你想提升什么,代码能力太宽泛了,是想提升算法能力还是工程能力? 工程能力做项目找实习,算法也分数据结构算法题和深度学习之类算法
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务