20190806大疆笔试两题
笔试两题
- 一、爱玩游戏的小J
- 二、不听话的机器人
一、爱玩游戏的小J
时间限制:C/C++语言 1000MS;其他语言 3000MS
内存限制:C/C++语言 65536KB;其他语言 589824KB
题目描述:
有许多程序员都热爱玩游戏游戏,而小J自称为游戏王,曾玩过几百种游戏,几乎所有能玩到的游戏大作都玩遍了。随着时间的推移,他发觉已经没有游戏可以让他玩了!于是他想改玩一些古老的游戏,以成为真正的“游戏王”。他希望在接下来的一段时间内将过去出的游戏全部玩一遍,但是毕竟时间有限,因此他感到很苦恼。于是他给每个游戏标上一个成就值,同时估算了完成这些游戏所需要的时间。
现在他只有X天时间。而每个游戏一旦开始玩,至少需要玩一天才能够停下来。那么,他所玩完的游戏的成就值之和最大能达到多少呢?(每个游戏必须玩完才能取得成值。)
输入 输出 样例输入 样例输出 大疆19年校招0806笔试B卷第一题(背包问题) 01背包问题——贪心+DP 时间限制:C/C++语言 1000MS;其他语言 3000MS 输入 输出 样例输入 4 4 样例输出 个人写的没用任何技巧的代码 牛客网上使用哈希表的解法
第一行输入case数T(0
对每个case输出一行,成就值之和的最大值。
2
2 2
10 1
20 2
3 4
10 2
18 3
10 2
20
20作者:笨蛋蜘蛛
链接:https://www.nowcoder.com/discuss/218147?type=post&order=time&pos=&page=1
来源:牛客网import java.util.Scanner;public class dji {public static void main(String[] args) {Scanner sc = new Scanner(System.in);int T = sc.nextInt();for (int j = 0; j < T; j++) {int N = sc.nextInt();int X = sc.nextInt();int[] Ai = new int[N];int[] Bi = new int[N];for (int i = 0; i < N; i++) {Ai[i] = sc.nextInt();Bi[i] = sc.nextInt();}dfs(N, X, Bi, Ai);}sc.close();}public static void dfs(int N, int X, int[] Ai, int[] Bi) {int []count = new int[X + 1];for (int m : count) {m = 0;}for (int i = 0; i < N; i++) {int w = Ai[i];int v = Bi[i];for (int j = X; j >= w; j--) {count[j] = Math.max(count[j], count[j - w] + v);}}System.out.println(count[X]);}}
二、不听话的机器人
内存限制:C/C++语言 65536KB;其他语言 589824KB
题目描述:
小B平时喜欢倒腾一些小东西,最近他准备给自己做的小机器人加入一套语音控制的功能,每个指令对应一个动作。
由于语言转文字有很多现成的方案,所以小B打算直接复用这些方案,但是语音转成了文字之后,还需要将文字跟具体的动作对应起来。
因此小B需要实现一个函数,将语音转换出来的文字,再转换成相应的动作。
为了简单实现,小B将语音直接转成了拼音,然后把对应的动作也都起了名字,因此只要预先输入好两者的映射关系,然后输入语音指令就输出相应的动作。
然而因为小B的函数有bug,机器人并不想听他的话…
你能帮小B解决这个问题吗?
输入包含多组测试数据,对于每组测试数据:
第一行输入两个正整数,空格隔开,需要进 行映射的命令的数目N 和进行调试时发送的语音指令条数 M (1 < N < 1000, 1 < M < 1000)
接下来N行,每行输入两个字符串表示语音指令和对应的动作cmd和action,以空格隔开,每个字符串的长度小于1000,且只有大小写字母
最后M行,每行输入一个字符串表示需要进行调试的语音指令
对于每组测试数据:
输出M行,根据调试的语音指令输出对应的动作指令action
ZuoZhuan TurnLeft
YouZhuan TurnRight
QianJin Forward
HouTui Backward
ZuoZhuan
QianJin
QianJin
HouTui
1 1
SDFlkjdf LNCIls
SDFlkjdf
TurnLeft
Forward
Forward
Backward
LNCIlsimport java.util.Scanner;public class main {public static void main(String args[]) {Scanner sc = new Scanner(System.in);while(sc.hasNext()) {int N = sc.nextInt();int M = sc.nextInt();String[] cmd = new String[N];String[] action = new String[N];String[] ans = new String[M];for(int i=0;i<N;i++) {cmd[i] = sc.next();action[i] = sc.next();}for(int j=0;j<M;j++) {ans[j] = sc.next();for(int k=0;k<N;k++) {if(ans[j].equals(cmd[k])) {System.out.println(action[k]);}}}}}
}
作者:笨蛋蜘蛛
链接:https://www.nowcoder.com/discuss/218147?type=post&order=time&pos=&page=1
来源:牛客网import java.util.HashMap;
import java.util.Scanner;public class dji1 {
public static void main(String[] args) {// TODO Auto-generated method stubScanner sc = new Scanner(System.in);while(sc.hasNext()){int n = sc.nextInt();int m = sc.nextInt();HashMapmap=new HashMap();for(int i=0;i<n;i++){String string1=sc.next();String string2=sc.next();map.put(string1, string2);}for(int j=0;j<m;j++){String string3=sc.next();if(map.get(string3)!=null)System.out.println(map.get(string3));}}sc.close();}}
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
