华为笔试 10.20
第三道题,分糖果。第一次提交过了10%,改了下,第二次提交过了20%。
又改了下,自认为完美了,再次提交,直接“系统错误”,查看提交详情,显示"test case not found",提交多次都是这个错误。
询问“客服”,客服系统回答意思是代码有误,自己检查。
后面又试了下,哪怕main函数里面 代码啥都不填,空的,也是报这个错误,无语了。
不知道大家遇到没有。
贴下代码。
public class Main { static boolean finded= false; static List<Integer> ans; public static void main(String[] args){ Scanner in=new Scanner(System.in); int n=in.nextInt(); int[] nums=new int[n]; int sum=0; for (int i=0;i<n;i++){ nums[i]=in.nextInt(); sum+=nums[i]; } if (sum%2==1){ System.out.println(-1);return; } Arrays.sort(nums); int target=sum/2; dfs(target,0,new ArrayList<>(),0,nums); if(ans==null){ System.out.println(-1);return; } Map<Integer,Integer> map=new HashMap<>(); for (int num:nums){ map.put(num,map.getOrDefault(num,0)+1); } StringBuilder line1=new StringBuilder(); for (int a:ans){ line1.append(a).append(" "); if (map.containsKey(a)){ map.put(a,map.get(a)-1); } } StringBuilder line2=new StringBuilder(); for (Map.Entry<Integer,Integer> entry:map.entrySet()){ int key=entry.getKey(),val=entry.getValue(); for (int i=0;i<val;i++){ line2.append(key).append(" "); } } System.out.println(target); System.out.println(line1.toString().trim()); System.out.println(line2.toString().trim()); } private static void dfs(int target,int m,ArrayList<Integer> path, int start,int[] nums){ if (finded || m>target) return; if (m==target){ finded=true; ans=path; return; } for (int i=start;i<nums.length;i++){ path.add(nums[i]); dfs(target,m+nums[i],new ArrayList<Integer>(path), i+1,nums); path.remove(path.size()-1); } } }