华为笔试第一题为什么本地通过上交不能AC

import sys
def largestTimeFromDigits(A):
        A.sort()
        for h in range(23, -1, -1):
            for m in range(59, -1, -1):
                for sec in range(59, -1, -1):
                    t = [h // 10, h % 10, m // 10, m % 10,sec //10, sec%10]
                    ts = sorted(t)
                    if ts == A:
                        return str(t[0]) + str(t[1]) + ":" + str(t[2]) + str(t[3])+ ":" + str(t[4]) + str(t[5])
        return "invalid"
line = sys.stdin.readline().strip()
num = list(map(int, line.strip().split(",")))
print(largestTimeFromDigits(num))
#华为##笔试题目##春招#
全部评论
输入要去掉首尾的的中括号 '['  ']' 的
点赞 回复 分享
发布于 2019-04-17 21:22
兄弟们,注意双屏问题啊,太坑了,开双屏算作弊
点赞 回复 分享
发布于 2019-04-17 21:24
可能因为读入的是字符串,不是数字,就很麻烦
点赞 回复 分享
发布于 2019-04-17 21:10
😓我也是,不过我是因为java的输入流有问题,不会读入数组,调了10分钟交卷了,简直悲剧
点赞 回复 分享
发布于 2019-04-17 21:03
我也感觉我的没错,就是ac不了,大佬你第一题通过多少
点赞 回复 分享
发布于 2019-04-17 21:08
你的输入有问题
点赞 回复 分享
发布于 2019-04-17 21:18
import java.util.*; public class test { public static void main(String args[]) { Scanner in = new Scanner(System.in); String inputString = in.next(); String[] stringArray = inputString.split(","); int[] a=new int[stringArray.length]; for(int i=0;i<stringArray.length;i++){ a[i]=Integer.parseInt(stringArray[i]); } String s = "invalid"; Arrays.sort(a); for(int i = 0 ;i<6;i++) System.out.println(a[i]); ok: for (int h =23;h>-1;h--) for (int m = 59;m>-1;m--) for (int sec =59;sec>-1;sec--) { int[] t = new int[6]; t[0] = h / 10; t[1] = h % 10; t[2] = m / 10; t[3] = m % 10; t[4] = sec/10; t[5] = sec%10; int[] ts = Arrays.copyOf(t, 6); Arrays.sort(t); if (Arrays.equals(t,a)) { s = Integer.toString(ts[0])+Integer.toString(ts[1])+":"+Integer.toString(ts[2])+Integer.toString(ts[3])+":"+Integer.toString(ts[4])+Integer.toString(ts[5]); break ok; } } System.out.println(s); } }这个是java的代码。。。我改完时间到了没提交
点赞 回复 分享
发布于 2019-04-17 21:22
楼主好牛逼啊,我当时被这题搞炸了
点赞 回复 分享
发布于 2019-04-26 22:00
全排列暴力过的,剪枝会快些,然后过滤非法情况……
点赞 回复 分享
发布于 2019-04-26 22:30

相关推荐

点赞 4 评论
分享
牛客网
牛客企业服务