拼多多2019校园招聘 正式批笔试 2018.8.30 第四题 拼词游戏
拼词游戏:原图来源自 https://blog.csdn.net/whl_program/article/details/82230415
java版:dfs深搜
public class Main{private static boolean flag=false; //标志位private static Set set=new HashSet<>(); //存放所有单词private static List [] li=new ArrayList [10]; //字符数组private static StringBuilder SB=new StringBuilder(); //存放暂时的字符private static String result=null; //最终结果static {for (int j = 0; j < 10; j++) { //初始化字符list数组li[j]=new ArrayList();}}public static void main(String[] args) { Scanner in=new Scanner(System.in);int N=in.nextInt();int L=in.nextInt(); for (int i = 0; i < N; i++) { //存入单词和字符String str=in.next();set.add(str);for (int j = 0; j < L; j++) {char ch=str.charAt(j);if(!li[j].contains(ch)) {li[j].add(ch);} }}for (int i = 0; i < L; i++) { //对字符list进行排序Collections.sort(li[i]);}dfs(0,L,SB);if(result!=null) {System.out.println(result);}else {System.out.println('-');} }public static void dfs(int id,int m,StringBuilder sb) { //深度搜索if(id>=m) { if(set.contains(sb.toString())) {return;} else {result=sb.toString();flag=true;return;} }int i=0;while(i
python版:使用库函数,计算笛卡尔积
from itertools import productdef sol(words:list):N = len(words)L = len(words[0])sets = [[0 for j in range(26)] for i in range(L)]for i in range(L):for j in range(N):sets[i][ord(words[j][i]) - 65] += 1sets = [[chr(i+65) for i in range(len(s)) if s[i] != 0] for s in sets]s = set(words)print(sets)for w in product(*sets):w = "".join(w)if w not in s:return welse:return "-"
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
