2018刑侦推理 java_2018年刑侦推理题,看见有人用python写的,想知道java怎么写,求思路...

本文详细介绍了如何使用Java编程实现一个数组规则检查器,通过一系列条件判断数组中元素是否符合特定规律,涉及整数幂运算、数组操作和多条件逻辑。展示了如何通过遍历和条件组合来验证10个复杂规则,适用于算法和数据结构的学习者。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

import java.util.ArrayList;

import java.util.List;

public class Test {

public static void main(String[] para) {

int[] arr;

int p0 = pow(4, 0);

int p1 = pow(4, 1);

int p2 = pow(4, 2);

int p3 = pow(4, 3);

int p4 = pow(4, 4);

int p5 = pow(4, 5);

int p6 = pow(4, 6);

int p7 = pow(4, 7);

int p8 = pow(4, 8);

int p9 = pow(4, 9);

List success_arrs = new ArrayList();

for (int i = 0; i < pow(4, 10); i++) {

arr = new int[11];

// 为了方便理解,数组从下标1开始,数据从1到4分别对应ABCD

arr[1] = i / p0 % 4 + 1;

arr[2] = i / p1 % 4 + 1;

arr[3] = i / p2 % 4 + 1;

arr[4] = i / p3 % 4 + 1;

arr[5] = i / p4 % 4 + 1;

arr[6] = i / p5 % 4 + 1;

arr[7] = i / p6 % 4 + 1;

arr[8] = i / p7 % 4 + 1;

arr[9] = i / p8 % 4 + 1;

arr[10] = i / p9 % 4 + 1;

System.out.print("检测数组:");

for (int j = 1; j <= 10; j++) {

System.out.print(arr[j] + ", ");

}

System.out.println();

// 开始检测

if (test_all(arr)) {// 符合规则

success_arrs.add(arr);

}

}

System.out.println("成功匹配" + success_arrs.size() + "个!");

for (int j = 0; j < success_arrs.size(); j++) {

int[] sa = success_arrs.get(j);

System.out.print("成功匹配的数组:");

for (int k = 1; k <= 10; k++) {

System.out.print(sa[k] + ", ");

}

System.out.println();

}

}

// 计算整数的幂

private static int pow(int a, int b) {

int result = 1;

for (int k = 0; k < b; k++) {

result = result * a;

}

return result;

}

// 测试是否符合规则

private static boolean test_all(int[] arr) {

// 第1题不需要判断

// 第2题

boolean b2 = ((arr[2] == 1 && arr[5] == 3)

|| (arr[2] == 2 && arr[5] == 4) || (arr[2] == 3 && arr[5] == 1) || (arr[2] == 4 && arr[5] == 2));

// 第3题

boolean b3 = ((arr[3] == 1 && arr[6] == arr[2] && arr[6] == arr[4] && arr[6] != arr[3])

|| (arr[3] == 2 && arr[3] == arr[2] && arr[3] == arr[4] && arr[3] != arr[6])

|| (arr[3] == 3 && arr[3] == arr[6] && arr[3] == arr[4] && arr[3] != arr[2]) || (arr[3] == 4

&& arr[3] == arr[6] && arr[3] == arr[2] && arr[3] != arr[4]));

// 第4题

boolean b4 = ((arr[4] == 1 && (arr[1] == arr[5]))

|| (arr[4] == 2 && (arr[2] == arr[7]))

|| (arr[4] == 3 && (arr[1] == arr[9])) || (arr[4] == 4 && (arr[6] == arr[10])));

// 第5题

boolean b5 = ((arr[5] == 1 && (arr[8] == 1))

|| (arr[5] == 2 && (arr[4] == 2))

|| (arr[5] == 3 && (arr[9] == 3)) || (arr[5] == 4 && (arr[7] == 4)));

// 第6题

boolean b6 = ((arr[6] == 1 && (arr[8] == arr[2] && arr[8] == arr[4]))

|| (arr[6] == 2 && (arr[8] == arr[1] && arr[8] == arr[6]))

|| (arr[6] == 3 && (arr[8] == arr[3] && arr[8] == arr[10])) || (arr[6] == 4 && (arr[8] == arr[8] && arr[5] == arr[9])));

// 第7题

int[] count_num = {0, 0, 0, 0, 0};// 各选项计数,实际只使用了下标1到4的

for (int k = 1; k <= 10; k++) {

count_num[arr[k]]++;

}

int max_number = count_num[1];

int min_number = count_num[1];

int max_index = 1;

int min_index = 1;

for (int k = 1; k <= 4; k++) {

if (count_num[k] > max_number) {

max_number = count_num[k];

max_index = k;

}

if (count_num[k] < min_number) {

min_number = count_num[k];

min_index = k;

}

}

boolean b7 = ((arr[7] == 1 && (min_index == 3))

|| (arr[7] == 2 && (min_index == 2))

|| (arr[7] == 3 && (min_index == 1)) || (arr[7] == 4 && (min_index == 4)));

// 第8题

boolean b8 = ((arr[8] == 1 && (arr[7] - arr[1] != 1 && arr[7] - arr[1] != -1))

|| (arr[8] == 2 && (arr[5] - arr[1] != 1 && arr[5] - arr[1] != -1))

|| (arr[8] == 3 && (arr[2] - arr[1] != 1 && arr[2] - arr[1] != -1)) || (arr[8] == 4 && (arr[10]

- arr[1] != 1 && arr[10] - arr[1] != -1)));

// 第9题

boolean b9 = ((arr[9] == 1 && ((arr[1] == arr[6]) != (arr[6] == arr[5])))

|| (arr[9] == 2 && ((arr[1] == arr[6]) != (arr[10] == arr[5])))

|| (arr[9] == 3 && ((arr[1] == arr[6]) != (arr[2] == arr[5]))) || (arr[9] == 4 && ((arr[1] == arr[6]) != (arr[9] == arr[5]))));

// 第10题

boolean b10 = ((arr[10] == 1 && (max_number - min_number == 3))

|| (arr[10] == 2 && (max_number - min_number == 2))

|| (arr[10] == 3 && (max_number - min_number == 4)) || (arr[10] == 4 && (max_number

- min_number == 1)));

return b2 && b3 && b4 && b5 && b6 && b7 && b8 && b9 && b10;

}

}

飞思卡尔智能车竞赛是一项备受关注的科技赛事,旨在激发学生的创新和实践能力,尤其是在嵌入式系统、自动控制和机器人技术等关键领域。其中的“电磁组”要参赛队伍设计并搭建一辆能够自主导航的智能车,通过电磁感应线圈感知赛道路径。本压缩包文件提供了一套完整的电磁组智能车程序,这是一套经过实战验证的代码,曾在校级比赛中获得第二名的优异成绩。 该程序的核心内容可能涉及以下关键知识点: 传感器处理:文件名“4sensor”表明车辆配备了四个传感器,用于获取环境信息。这些传感器很可能是电磁感应传感器,用于探测赛道上的导电线圈。通过分析传感器信号的变化,车辆能够判断自身的行驶方向和位置。 数据采集与滤波:在实际运行中,传感器读数可能受到噪声干扰,因此需要进行数据滤波以提高精度。常见的滤波算法包括低通滤波、高斯滤波和滑动平均滤波等,以确保车辆对赛道的判断准确无误。 路径规划:车辆需要根据传感器输入实时规划行驶路径。这可能涉及PID(比例-积分-微分)控制、模糊逻辑控制或其他现代控制理论方法,从而确保车辆能够稳定且快速地沿赛道行驶。 电机控制:智能车的驱动通常依赖于直流电机或无刷电机,电机控制是关键环节。程序中可能包含电机速度和方向的调节算法,如PWM(脉宽调制)控制,以实现精准的运动控制。 嵌入式系统编程:飞思卡尔智能车的控制器可能基于飞思卡尔微处理器(例如MC9S12系列)。编程语言通常为C或C++,需要掌握微控制器的中断系统、定时器和串行通信等功能。 软件架构:智能车软件通常具有清晰的架构,包括任务调度、中断服务程序和主循环等。理解和优化这一架构对于提升整体性能至关重要。 调试与优化:程序能够在比赛中取得好成绩,说明经过了反复的调试和优化。这可能涉及代码效率提升、故障排查以及性能瓶颈的识别和解决。 团队协作与版本控制:在项目开发过程中,团队协作和版本控制工具(如Git)的应用不可或缺,能够保
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值