duzhi1195926
2019-01-19 17:37
采纳率: 100%
浏览 410

没有大神可以用java实现这个算法

图片说明
输入一次数据 然后 统计按规律的打对号 不按规律的打错号 每五分钟输入一次 统计12个小时内的对号和错号的个数。
第一个规律,如果1这个数字左边的数字有 1、5、6、10,其中的一个,那么就打个对号 这十个规律是分开的 每输入一组数据要统计十次。这里的左边是紧挨着的左边。比如这个图片最下面一行的数字,对于上面十个规律来说,他只满足六个,也就是如果我输入图片最后一行的数字 输出的是六个对号四个错号。

  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

3条回答 默认 最新

  • 小带鱼 2019-01-19 19:50
    已采纳

    你的意思我看懂了,但是你举的例子最后一行数字按照你的规律说,答案是错的。(六个对号四个错号),按照你的规律来说,应该是两个错,八个对。
    3:234789 交集 null = null 叉
    9:15610 交集 3 = null 叉
    5:234789 交集 39 = 39 勾
    2:234789 交集 395 = 39 勾
    4:234789 交集 3952 = 239 勾
    8:234789 交集 39524 = 2349 勾
    1:15610 交集 395248 = 5 勾
    7:15610 交集 3952481 = 15 勾
    10:234789 交集 39524817 = 234789 勾
    6:15610 交集 3952481710 = 1510 勾
    你先确定一下这个规律是不是对的,如果确定了规律,出JAVA的算法很容易

    
    import java.util.ArrayList;
    import java.util.HashMap;
    import java.util.List;
    import java.util.Scanner;
    
    public class Myclass01 {
    
        private HashMap<Integer,List<Integer>> map = new HashMap<Integer, List<Integer>>();
    
        public static void main(String[] args) {
            new Myclass01();
        }
    
        public Myclass01() {
            System.out.print("请自行输入一串数字(0代表10):");
            Scanner scan = new Scanner(System.in);
            String read = scan.nextLine();
            if(!read.matches("\\d+")){
                System.out.println("输入的必须都是数字!");
                return;
            }
            char[] ch = read.toCharArray();
            int [] nums_input = new int[ch.length];
            for (int i = 0; i < ch.length; i++) {
                nums_input[i] = Integer.parseInt(String.valueOf(ch[i]));
            }
            initialization();
            List<Integer> nums_input_list = new ArrayList<Integer>();
            for (int i = 0; i < nums_input.length; i++) {
                int num = nums_input[i];
                nums_input_list.add(num);
            }
            for (int i = 0; i < nums_input_list.size(); i++) {
                int num = nums_input_list.get(i);
                if(num==0){
                    num = 10;
                }
                List<Integer> nums_list = map.get(num);
                if(i==0){
                    System.out.println(num+":×");
                }else{
                    int before = nums_input_list.get(i-1);
                    if(nums_list.contains(before)){
                        System.out.println(num+":√");
                    }else{
                        System.out.println(num+":×");
                    }
                }
    
            }
        }
    
        private int[] getRandomNum(int count) {
            // TODO 自动生成的方法存根
            int[] nums = new int[count];
            for (int i = 0; i < count; i++) {
                nums[i] = (int)(1+Math.random()*(10-1+1));
            }
    
            return nums;
        }
    
        private void initialization() {
            List<Integer> nums_1 = new ArrayList<Integer>();
            nums_1.add(1);
            nums_1.add(5);
            nums_1.add(6);
            nums_1.add(10);
            List<Integer> nums_2 = new ArrayList<Integer>();
            nums_2.add(2);
            nums_2.add(3);
            nums_2.add(4);
            nums_2.add(7);
            nums_2.add(8);
            nums_2.add(9);
    
            map.put(1,nums_1);
            map.put(2, nums_2);
            map.put(3, nums_2);
            map.put(4, nums_2);
            map.put(5, nums_2);
            map.put(6, nums_1);
            map.put(7, nums_1);
            map.put(8, nums_2);
            map.put(9, nums_1);
            map.put(10, nums_2);
        }
    
    }
    
    

    运行结果是:
    3:×
    9:×
    5:√
    2:×
    4:√
    8:√
    1:×
    7:√
    10:√
    6:√

    已采纳该答案
    打赏 评论
  • 流泪熊猫头 2019-01-19 17:59

    我可以说我根本就没有看懂你说的是什么规律嘛……你把规律用1、2、3…这种罗列的方式总结一下

    打赏 评论
  • qq_42022674 2019-01-19 18:00

    以前学过,但我好像忘了:)

    打赏 评论

相关推荐 更多相似问题