当前位置:   article > 正文

田忌赛马-od_给定两个只包含数字的数组a, b, 调整数组a里面数字的顺序,使得尽可能多的a[i] >

给定两个只包含数字的数组a, b, 调整数组a里面数字的顺序,使得尽可能多的a[i] >

题目-田忌赛马

给定两个只包含数字的数组a, b, 调整数组a里面数字的顺序,使得尽可能多的a[i] > b[i]。数组a和b中的数字各不相同。
输出所有可以达到最优结果的a数组数量
输入描述:
输入的第一行是数组a中的数字,其中只包含数字,每两个数字之间相隔一个空格,a数组大小不超过10
输入的第一行是数组b中的数字,其中只包含数字,每两个数字之间相隔一个空格,b数组大小不超过10
输出描述:

输出所有可以达到最优结果的a数组数量

补充说明:

示例1

输入:

11 8 20
10 13 7
输出:

1
说明:

最优结果只有一个,a = [11, 20, 8],故输出1

7 8 9 8
1 2 10 3
输出:12

解题思路:

考察全排列,排列之前队数组a进行排序,目的是去重

  1. public static int maxMatch = 0; //数组1大于数组2最大个数
  2. public static int globalCount =0; //最大计数
  3. public static void main(String[] args) {
  4. Scanner sc = new Scanner(System.in);
  5. while(sc.hasNext()) {
  6. maxMatch = 0;
  7. globalCount =0;
  8. String[] s1 = sc.nextLine().split(" ");
  9. String[] s2 = sc.nextLine().split(" ");
  10. int nums1[] = new int[s1.length];
  11. int nums2[] = new int[s2.length];
  12. for(int i=0; i< s1.length;i++) {
  13. nums1[i] = Integer.valueOf(s1[i]);
  14. }
  15. for(int i=0; i< s2.length;i++) {
  16. nums2[i] = Integer.valueOf(s2[i]);
  17. }
  18. int[] vis = new int[nums1.length];
  19. Arrays.sort(nums1); //排序,方便去重
  20. solution(nums1, nums2, 0, vis, 0);
  21. System.out.println(globalCount);
  22. }
  23. }
  24. public static int solution(int nums1[], int nums2[], int nums2Index,
  25. int[] vis, int greateMatchNum){
  26. if(nums2Index == nums2.length) {// 说明已经匹配完毕,开始算账
  27. if(greateMatchNum > maxMatch) {
  28. maxMatch = greateMatchNum;
  29. globalCount = 1; // 重置1
  30. }else if(greateMatchNum == maxMatch) {
  31. globalCount +=1;
  32. }
  33. return 0;
  34. }
  35. for(int i=0; i< nums1.length; i++) {
  36. //这个位置的数没有被标记使用,可以用
  37. if(vis[i] != -1) {
  38. //前一个数在这个位置已经排列过,重复,跳过
  39. if(i>0 && nums1[i] == nums1[i-1] && vis[i-1] != -1) {
  40. continue;
  41. }
  42. vis[i] = -1; // 标记已用
  43. solution(nums1, nums2, nums2Index+1, vis,(nums1[i] > nums2[nums2Index]?greateMatchNum+1:greateMatchNum));
  44. vis[i] = 0; // 恢复标记
  45. }
  46. }
  47. return 0;
  48. }

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家小花儿/article/detail/884166
推荐阅读
相关标签
  

闽ICP备14008679号