小编Bla*_*ash的帖子

Java男女皆宜的浴室

我必须使用Java信号量解决这个问题,但我不知道如何,我找不到任何相关的Java资料.这是怎么回事:

有各种各样的线索:男人和女人.两者都想使用数量为BATHROOM_SIZE的相同资源.5条规则:

  1. 在信令需要使用资源之后,每个线程都应该等到他能够使用它.
  2. 当多个BATHOOM_SIZE线程同时使用资源时,防止出现这种情况.
  3. 防止女人和男人同时使用浴室.
  4. 线程应该同时使用资源.如果有一种类型的线程很多,那么BATHROOM_SIZE线程应该使用资源.
  5. 防止饥饿.

结果

效劳于:

1女,1人,5女,5人

失败:

5women1men,5men1women,2men2women,5men5women.

自从星期一以来我一直在努力使它成功,现在我的想法已经用完了.

所以我的任务是编写实现BathroomInterface的Bathroom.java类:

public interface BathroomInterface {

    public static final int BATHROOM_SIZE = 3; //3 is just example
    void manEnter();
    void manExit();
    void womanEnter();
    void womanExit();
}
Run Code Online (Sandbox Code Playgroud)

在系统中有许多男人和女人的线程像这样工作:

for(int i = 0; i < n; i++) {
  bathroom.manEnter();
  //uses bathroom random amount of time
  bathroom.manExit();
}

for(int i = 0; i < m; i++) {
  bathroom.womanEnter();
  //uses bathroom random amount of time
  bathroom.womanExit();
}
Run Code Online (Sandbox Code Playgroud)

我也有 …

java multithreading semaphore

7
推荐指数
1
解决办法
4252
查看次数

BST输入的可能排列

给我一个字符串,即"CPHBDZ".通过(按此顺序)将字母插入BST,我将:

  C
 / \
B   P
   / \
  H   Z
 /
D
Run Code Online (Sandbox Code Playgroud)

如果我们将字符串的顺序更改为"CBPHDZ",我们将得到相同的树.我必须找到并列出提供相同BST的输入字符串的所有排列.我想出了如何计算这些排列的数量,但我无法弄清楚实际找到它们的任何算法.

language-agnostic algorithm permutation binary-search-tree

6
推荐指数
1
解决办法
1792
查看次数