美团点评2017秋招笔试编程题

https://www.nowcoder.com/test/5583018/summary

这套题目难度不大,主要是考了递归调用、完全背包、栈、字典树

看得出是数据结构的题目多一些,最开始第二个题目,一个完全背包的,没看出来是完全背包,感觉数据量不大,递归可以求吧

结果说数字大一点算不出答案,后来改循环,发现还是很多算不出,然后做别的题目去了,最后才做这个,才发现是个裸的完全背包。

第一题:用骰子来控制走的步数,然后给你一个总的步数,求走法有多少种

思路:递归分解即可

 1 import java.util.*;
 2  
 3 public class Main {
 4     public static void main(String[] args) {
 5         Scanner cin = new Scanner(System.in);
 6         int x = cin.nextInt();
 7         System.out.println(deal(x));
 8     }
 9     static int deal(int x){
10         if(x==0)
11             return 1;
12         int num = 0;
13         for(int i = 1;i<=6;i++){
14             if(x-i>=0){
15                 num+=deal(x-i);
16             }else
17                 return num;
18         }
19         return num;
20     }
21 }

 

第二题:给你六种纸币(1,5,10,20,50,100),每种纸币有无限多个,求N元钱用这六种纸币组合可以有多少种组合方法

思路:完全背包,把纸币的数量看成是重量,然后N元钱看成背包大小即可

 1 import java.util.*;
 2 
 3 public class Main {
 4     public static void main(String[] args) {
 5         Scanner cin = new Scanner(System.in);
 6         int weight[] = {1,5,10,20,50,100};
 7         Long dp[][] = new Long[10][10005];
 8         int n = cin.nextInt();
 9         for(int i = 0;i<dp.length;i++)
10             for(int j = 0;j<dp[i].length;j++)
11                 dp[i][j] = 0L;
12         dp[0][0] = 1L;
13         for(int i = 1;i<=weight.length;i++){
14             for(int j = 0;j<=n;j++){
15                 if(j< weight[i-1])
16                     dp[i][j] = dp[i-1][j];
17                 else
18                     dp[i][j] = dp[i-1][j]+dp[i][j-weight[i-1]];
19             }
20         }
21         System.out.println(dp[weight.length][n]);
22     }
23 }

 

第三题:和POJ这个题目一样http://www.cnblogs.com/Tree-dream/p/5701137.html

 

第四题:给出两个字符串(可能包含空格),找出其中最长的公共连续子串,输出其长度

思路:构建字典树进行比较即可

 1 import java.util.*;
 2  
 3 public class Main {
 4     public static void main(String[] args) {
 5         Scanner cin = new Scanner(System.in);
 6         String str = cin.nextLine();
 7         String p = cin.nextLine();
 8         Node root = new Node();
 9         for(int i = 0;i<str.length();i++){
10             if(root.next[str.charAt(i)]==null){
11                 root.next[str.charAt(i)] = new Node(str.charAt(i));
12                 add(root.next[str.charAt(i)],str.substring(i+1));
13             }else {
14                 add(root.next[str.charAt(i)],str.substring(i+1));
15             }
16         }
17         int max = 0;
18         for(int i = 0;i<p.length();i++){
19             if(root.next[p.charAt(i)]!=null){
20                 int tmp = Find(root,p.substring(i));
21                 if(tmp>max)
22                     max = tmp;
23             }
24         }
25         System.out.println(max);
26     }
27  
28     static int Find(Node root,String x){
29         Node tmp = root;
30         int leng = 0;
31         for(int i = 0;i<x.length();i++){
32             if(tmp.next[x.charAt(i)]!=null){
33                 leng++;
34                 tmp = tmp.next[x.charAt(i)];
35             }else
36                 break;
37         }
38         return leng;
39     }
40  
41     static void add(Node node,String x){
42         Node tmp = node;
43         for(int i = 0;i<x.length();i++){
44             if(tmp.next[x.charAt(i)]==null)
45                 tmp.next[x.charAt(i)] = new Node(x.charAt(i));
46             tmp = tmp.next[x.charAt(i)];
47         }
48     }
49 }
50 class Node{
51     Node next[] = new Node[200];
52     char str;
53     Node(char x){
54         this.str = x;
55         for(int i = 0;i<100;i++)
56             next[i] = null;
57     }
58     Node(){
59  
60     }
61 }

 

转载于:https://www.cnblogs.com/Tree-dream/p/8545789.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
很抱歉,我无法提供南方电网秋招笔试真题的具体内容,因为我无法获取或提供特定公司的招聘信息。但是,我可以给你一些关于南方电网秋招笔试的一般性建议和常见题型。 南方电网秋招笔试通常包括以下几个方面的内容: 1. 专业知识测试:涉及电力工程、电气工程、能源与动力工程等相关专业知识,包括电力系统、电力设备、电力工程管理等方面的知识。 2. 数学与逻辑推理:包括数学运算、概率统计、逻辑推理等方面的题目。 3. 英语能力测试:主要考察英语阅读理解、词汇量和语法等方面的能力。 4. 综合素质测试:主要考察应聘者的综合素质,包括综合分析能力、创新思维、团队合作等方面。 在备考南方电网秋招笔试时,建议你注意以下几点: 1. 熟悉岗位要求:了解南方电网对应聘者的要求,明确自己所应聘的岗位所需的专业知识和技能。 2. 多做模拟题:通过做一些模拟题来熟悉题型和考试时间,提高解题速度和准确性。 3. 复习重点知识:重点复习与岗位相关的专业知识,包括电力系统、电力设备、电力工程管理等方面的知识。 4. 提高英语能力:加强英语阅读理解和词汇量的积累,可以通过阅读英文文章、做题和听力练习等方式提高英语能力。 5. 注重综合素质:在备考过程中,注重培养自己的综合素质,包括综合分析能力、创新思维和团队合作等方面的能力。 希望以上建议对你有所帮助!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值