当前位置: 首页 > 知识库问答 >
问题:

需要排列和组合

乐正明辉
2023-03-14

我试图从黑莓的本机日历中读取“day”值,该值以整数形式返回,并映射到一周中每一天的值。这些值如下所示:

  • 周一:32768
  • 星期二:16384
  • 周三:8192
  • 周四:4096
  • 周五:2048
  • sat:1024
  • 孙:65536

如果事件发生在一天内,我可以看到值是否为mon/tue/we/thu/fri/sat/sun

if (rule.MONDAY == rule.getInt(rule.DAY_IN_WEEK)) {
    System.out.println("occurs monday");
}
rule.getInt(rule.DAY_IN_WEEK)

值也与星期一值相同。

现在的问题是,如果事件发生在两天或三天以上

rule.getInt(rule.DAY_IN_WEEK)

返回所选天数的总和。

例如:如果日子是:w, sat,那么我得到的结果是9216,w sat的总和,由此我无法知道事件发生的日子。

我怎么能做这些数字的排列/组合,并获得'n'天数选择的确切结果。

共有3个答案

汪学真
2023-03-14

要知道事件发生在一周的哪几天,你需要做这样的事情:

boolean occursOnMonday = (rule.getInt(rule.DAY_IN_WEEK) & rule.MONDAY) != 0;

在哪里

星期三是8192,二进制是10000000000000 (2乘以13)

星期六是1024,二进制是00010000000000 (2乘以9)

所以在周三和周六发生的事件是9216,也就是1001000000000。

然后使用位运算,您可以知道1中的位是什么,0中的位是什么,这样您就可以知道事件发生的日期。

桂梓
2023-03-14

使用二进制和运算符如下:

int day = rule.getInt(rule.DAY_IN_WEEK)
if(day & rule.MONDAY != 0) {
 System.out.println("occurs monday");
}
if(day & rule.WEDNESDAY != 0) {
 System.out.println("occurs wednesday");
} /* and so on */

请注意:

0000 0100 0000 0000 = 1024

0000 1000 0000 0000 = 2048

. . . 同时检查位掩码

杜凯
2023-03-14

我假设天数只是一个数字中的位标志,所以你可以更改支票:

if ( (rule.getInt(rule.DAY_IN_WEEK) & rule.MONDAY) != 0 ) {
   System.out.println("occurs monday");
}
 类似资料:
  • 问题内容: 如果binarySearch方法要求您先对数组进行排序,然后再将其作为参数传递给方法调用,那么为什么不对binarySearch方法进行排序呢? 问题答案: 二进制搜索的工作原理是假设数组的中间包含数组中的中值。如果未排序,则此假设就没有意义,因为中位数可以在任何地方,并且将数组减半可能意味着您削减了要搜索的数字。 二进制搜索不进行排序本身的原因是因为它不需要…该数组已排序。

  • 排列 下一个排列 LeetCode - 31. 下一个排列 题目描述 实现获取下一个排列的函数,算法需要将给定数字序列重新排列成字典序中下一个更大的排列。 如果不存在下一个更大的排列,则将数字重新排列成最小的排列(即升序排列)。 必须原地修改,只允许使用额外常数空间。 以下是一些例子,输入位于左侧列,其相应输出位于右侧列。 1,2,3 → 1,3,2 3,2,1 → 1,2,3 1,1,5

  • 问题内容: 给定一个随机排列的 0 和 1 数组,您需要将数组中的 0 和 1 分开。 例如: 问题答案: 解决方案1: 计算数组中 0 的数量。假设我们得到 一旦我们得到计数,将 放入数组,并将 放入数组的后半部分。 java代码: 时间复杂度:O(N) 解决方案2: 算法: 让我们说数组是 arr[] 初始化两个索引变量, 增加左变量直到得到 。 递减右边的变量直到你得到 0 如果 ,交换 和

  • 大家好,我对C编码很陌生,但我正在学习这门课程。 我想写一段代码,找出数组中r个元素的组合,然后对结果进行置换。 我已经能够从各种来源进行研究,并有单独的代码,将打印组合和排列的数组。 我面临的挑战是如何将两个代码结合起来并使其作为一个整体工作。 第一个代码用于 5 个元素数组的组合,其中一次选择 4 个元素。 第二个代码是排列数组组合(前一个代码)的每个结果,这意味着4个元素的排列。在下面的这段

  • 我已经实现了代码来输出从输入数组的元素中获得目标和的所有不同的唯一可能性。例如,给定

  • 问题内容: 我的问题实际上与在这里发现的问题非常相似: AngularJs-取消路线更改事件 简而言之,我正在使用$ routeChangeStart并尝试使用$location更改当前路由。完成后,控制台会显示原始页面仍在加载中,并很快被新页面覆盖。 提供的解决方案是使用$ locationChangeStart而不是$routeChangeStart,这应该可以防止额外的重定向。不幸的是,我在