求助求助,拼多多笔试题目

#拼多多##笔试题目#
全部评论
import java.util.ArrayList; import java.util.List; import java.util.Scanner; /**  * @file: 扑克游戏  * @author: Ash  * @date: 2019/9/1 15:15  * @description:  * 3  * 123  * 3  * 123  * 321  * 45  * 67  *  * {  * d d l  * d d r  * }  * {  * l l l  * r l l  * }  * {  * }  * @since:  */ public class 扑克游戏 {     public static void main(String[] args) {         Scanner in = new Scanner(System.in);         while (in.hasNext()) {             int s = Integer.parseInt(in.nextLine());             for (int i = 0; i < s; i++) {                 String str1 = in.nextLine();                 String str2 = in.nextLine();                 int n = str1.length();                 System.out.println("{");                 List<String> res = new ArrayList<>();                 dfs("", str2, str1, 0, n, "", res);                 for (String st : res) {                     System.out.println(st.trim());                 }                 System.out.println("}");             }         }         in.close();     }     private static void dfs(String cmd, String goal, String ori, int depth, int n, String s, List<String> res) {         if (depth == n && !goal.equals(s) || depth > n || s.length() > goal.length()) {             return;         }         if (depth == n && goal.equals(s)) {             res.add(cmd);         } else {             // d             dfs(cmd + " " + "d", goal, ori, depth + 1, n, s, res);             // l             dfs(cmd + " " + "l", goal, ori, depth + 1, n, ori.charAt(depth) + s, res);             // r             dfs(cmd + " " + "r", goal, ori, depth + 1, n, s + ori.charAt(depth), res);         }     } }
1 回复 分享
发布于 2019-09-01 17:02
原本以为dfs肯定时间不够,还想要剪枝,但一看题目已经放水了,N、M是[1, 8]。我来个python版本的AC代码。 import sys def str2list(string):     res = []     while string != '':         res.append(int(string[0]))         string = string[1:]     return res def dfs(mei, create, temp):     if create == bai and not mei:         res.append(temp)     elif not mei:         return     else:         # d         dfs(mei[1:], create, temp + ['d'])         # l         dfs(mei[1:], [mei[0]] + create, temp + ['l'])         # r         dfs(mei[1:], create + [mei[0]], temp + ['r']) data = sys.stdin.readlines() num = len(data) max_len = int(data[0].strip()) for i in range((num - 1) // 2):     res = []     flag = True     mei = str2list(data[1 + i * 2].strip())     bai = str2list(data[2 + i * 2].strip())     print('{')     for b in bai:         if b not in mei:             flag = False     if not flag:         print('}')         continue     dfs(mei, [], [])     for j in range(len(res)):         out = ''         for s in res[j]:             out += s + ' '         print(out[:-1])     print('}')
点赞 回复 分享
发布于 2019-09-01 17:05
求助大佬😂
点赞 回复 分享
发布于 2019-09-01 16:59
似乎是最短编辑距离的思路。
点赞 回复 分享
发布于 2019-09-01 17:02
我是暴力穷举解出来的
点赞 回复 分享
发布于 2019-09-01 17:06
求助为什么输出会有两行呀,不是只有小梅可以操作吗?而且丢弃最左边,意思是其他的都加入新序列?
点赞 回复 分享
发布于 2019-09-01 17:23
package company.pinduoduo; import java.util.*; public class Main02 {     public static void main(String[] args) {         Scanner sc = new Scanner(System.in);         while (sc.hasNext()){             int s = sc.nextInt(); //进行的次数             for (int  i = 1;  i<=s ; ++i) {                 String mei = sc.next();                 String bai = sc.next();                 List<String> res = new ArrayList<>();                 List<String> list = dfs(mei,bai,"",0,res                         ,"");                 Collections.sort(list);                 System.out.println("{");                 for(String ls: list){                     for (int j = 0; j <ls.length() ; j++) {                         if(j!=ls.length()-1) System.out.print(ls.charAt(j)+" ");                         else {                             System.out.print(ls.charAt(j));                         }                     }                     System.out.println();                 }                 System.out.println("}");             }         }     }     public static List<String> dfs(String mei,String bai,String newStr,                                    int i,List<String> res,String way){         if(bai.equals(newStr)){             res.add(way);             return res;         }         if(i==mei.length()) return res;         way+="d";         dfs(mei,bai,newStr,i+1,res,way);         way = way.substring(0,way.length()-1);         String tmp1 = newStr;         newStr = mei.substring(i,i+1) + newStr;         way+="l";         dfs(mei,bai,newStr,i+1,res,way);         way = way.substring(0,way.length()-1);         newStr = tmp1;         String tmp2 = newStr;         newStr = newStr + mei.substring(i,i+1);         way+="r";         dfs(mei,bai,newStr,i+1,res,way);         way = way.substring(0,way.length()-1);         newStr = tmp2;         return res;     } }
点赞 回复 分享
发布于 2019-09-01 17:33
哎,做的时候理解错了,一直以为在原牌堆交换得到新牌堆,结果是原牌堆一张张打出去放到新牌堆。。😓😓😓
点赞 回复 分享
发布于 2019-09-01 17:37

相关推荐

ProMonkey2024:5个oc?厉害! 但是有一个小问题:谁问你了?😡我的意思是,谁在意?我告诉你,根本没人问你,在我们之中0人问了你,我把所有问你的人都请来 party 了,到场人数是0个人,誰问你了?WHO ASKED?谁问汝矣?誰があなたに聞きましたか?누가 물어봤어?我爬上了珠穆朗玛峰也没找到谁问你了,我刚刚潜入了世界上最大的射电望远镜也没开到那个问你的人的盒,在找到谁问你之前我连癌症的解药都发明了出来,我开了最大距离渲染也没找到谁问你了我活在这个被辐射蹂躏了多年的破碎世界的坟墓里目睹全球核战争把人类文明毁灭也没见到谁问你了(别的帖子偷来的,现学现卖😋)
点赞 评论 收藏
分享
评论
点赞
14
分享
正在热议
# 25届秋招总结 #
443173次浏览 4517人参与
# 春招别灰心,我们一人来一句鼓励 #
42122次浏览 537人参与
# 阿里云管培生offer #
120413次浏览 2220人参与
# 地方国企笔面经互助 #
7973次浏览 18人参与
# 同bg的你秋招战况如何? #
77083次浏览 569人参与
# 实习必须要去大厂吗? #
55804次浏览 961人参与
# 北方华创开奖 #
107468次浏览 600人参与
# 虾皮求职进展汇总 #
116163次浏览 886人参与
# 如果你有一天可以担任公司的CEO,你会做哪三件事? #
11668次浏览 289人参与
# 实习,投递多份简历没人回复怎么办 #
2454912次浏览 34860人参与
# 提前批简历挂麻了怎么办 #
149924次浏览 1978人参与
# 在找工作求抱抱 #
906096次浏览 9421人参与
# 如果公司给你放一天假,你会怎么度过? #
4762次浏览 55人参与
# 你投递的公司有几家约面了? #
33209次浏览 188人参与
# 投递实习岗位前的准备 #
1196021次浏览 18550人参与
# 机械人春招想让哪家公司来捞你? #
157643次浏览 2267人参与
# 双非本科求职如何逆袭 #
662359次浏览 7397人参与
# 发工资后,你做的第一件事是什么 #
12798次浏览 62人参与
# 工作中,努力重要还是选择重要? #
35896次浏览 384人参与
# 简历中的项目经历要怎么写? #
86935次浏览 1516人参与
# 参加完秋招的机械人,还参加春招吗? #
20148次浏览 240人参与
# 我的上岸简历长这样 #
452049次浏览 8089人参与
牛客网
牛客企业服务