爱奇艺笔试第一题

爱奇艺笔试第一题
例题:
4
110
所以数字从1,2,3,4选,然后组合。
如果第一个放1,因为数组首位是1,但是2,3,4都比1大,因此X;
放2的时候,1比2小,成立,21,但是数组第二位还是1,要找一个比1小的数,没有,X;
放3,第二位放2,第三位放1,满足后一个比前一个小,此时数组第三位是0,要找一个比0大的数放在后面,此时只有4,满足。所以3214.
如果432的时候,1比2小,不满足,所以4321不成立,但是431满足后一个大于前一个,2比1大,对应数组第三个0的限定。所以4312成立。
那么,问题来了。
代码怎么写?

#爱奇艺##笔试题目##秋招#
全部评论
老哥们第一题具体可以参考leetcode46题全排列我觉着差不多😂,我还没写第二题呢
点赞 回复 分享
发布于 2019-09-08 16:26
同求代码
点赞 回复 分享
发布于 2019-09-08 16:00
或者编程思路怎么弄?总不能全排列啊然后一个个排除啊。。也许有规律的吧
点赞 回复 分享
发布于 2019-09-08 16:08
求第一题思路
点赞 回复 分享
发布于 2019-09-08 16:11
暴力全排列只过了36%
点赞 回复 分享
发布于 2019-09-08 16:22
😂
点赞 回复 分享
发布于 2019-09-08 16:24
第一题暴力
点赞 回复 分享
发布于 2019-09-08 16:32
dp可以过
点赞 回复 分享
发布于 2019-09-08 16:41
两道题都只A了36%....以为是语言的问题,py换了CPP还是一样,放弃了
点赞 回复 分享
发布于 2019-09-08 16:43
都只A了一点点 import java.util.*; import java.io.*; public class Main1 { public static void main(String[] args) { Scanner cin = new Scanner(System.in); while (cin.hasNext()) { int n = cin.nextInt(); int[] aNums = new int[n-1]; for (int i = 0; i < n-1; ++i) { aNums[i] = cin.nextInt(); } int[] sum = new int[1]; sum[0] = 0; List<Integer> tmp = new LinkedList<>(); genNums(n, tmp, sum, aNums); System.out.println(sum[0]); } } public static void genNums(int n, List<Integer> tmp, int[] sum, int[] aNums) { if (tmp.size() == n) { sum[0] = sum[0] + 1; } else { for (int i = 1; i < n+1; ++i) { if (!tmp.contains(i)) { if (check(tmp, i-1, aNums)) { tmp.add(i); genNums(n, tmp, sum, aNums); tmp.remove(tmp.size()-1); } } } } } public static boolean check(List<Integer> tmp, int i, int[] aNums) { if (tmp.isEmpty()) return true; int pre = tmp.get(tmp.size()-1); int index = tmp.size() - 1; if (aNums[index] == 0) { if (pre < i + 1) { return true; } } else { if (pre > i + 1) { return true; } } return false; } } # ac 27% def solver(n, m): def genNums(n, m, cur): nonlocal tmp, total, dem, retA if m == 0 and n == 0: dem += 1 if check(tmp): retA += 1 else: for i in range(cur, total): p = ['A', 'B', 'C'][cur % 3] if n > 0: tmp.append(p+'0') genNums(n-1, m, i+1) tmp.pop() if m > 0: tmp.append(p+'1') genNums(n, m-1, i + 1) tmp.pop() tmp = [] total = m + n dem = 0 retA = 0 genNums(n, m, 0) ret = float('%.5f' % (retA / dem)) return ret def check(tmp): retA = 0 for n in tmp: # print(n) if n[1] == '0' and n[0] == 'A': retA += 1 break elif n[1] == '0' and n[0] == 'B': break return retA
点赞 回复 分享
发布于 2019-09-10 18:26

相关推荐

点赞 评论 收藏
分享
评论
3
11
分享
正在热议
# 25届秋招总结 #
442870次浏览 4513人参与
# 春招别灰心,我们一人来一句鼓励 #
42047次浏览 534人参与
# 阿里云管培生offer #
120319次浏览 2220人参与
# 地方国企笔面经互助 #
7965次浏览 18人参与
# 同bg的你秋招战况如何? #
76925次浏览 565人参与
# 实习必须要去大厂吗? #
55786次浏览 961人参与
# 北方华创开奖 #
107447次浏览 600人参与
# 虾皮求职进展汇总 #
115973次浏览 886人参与
# 如果你有一天可以担任公司的CEO,你会做哪三件事? #
11632次浏览 289人参与
# 实习,投递多份简历没人回复怎么办 #
2454828次浏览 34858人参与
# 提前批简历挂麻了怎么办 #
149917次浏览 1978人参与
# 在找工作求抱抱 #
906050次浏览 9421人参与
# 如果公司给你放一天假,你会怎么度过? #
4760次浏览 55人参与
# 你投递的公司有几家约面了? #
33209次浏览 188人参与
# 投递实习岗位前的准备 #
1195992次浏览 18550人参与
# 机械人春招想让哪家公司来捞你? #
157640次浏览 2267人参与
# 双非本科求职如何逆袭 #
662310次浏览 7397人参与
# 发工资后,你做的第一件事是什么 #
12786次浏览 62人参与
# 工作中,努力重要还是选择重要? #
35857次浏览 384人参与
# 简历中的项目经历要怎么写? #
86928次浏览 1516人参与
# 参加完秋招的机械人,还参加春招吗? #
20142次浏览 240人参与
# 我的上岸简历长这样 #
452040次浏览 8089人参与
牛客网
牛客企业服务