小编pol*_*nts的帖子

图着色算法:典型的调度问题

我正在训练像UvA这样的代码问题,我有这个问题,我必须考虑一组n个考试和k 参加考试的学生,找出是否可以在两个时间段安排所有考试.

输入 几个测试用例.每一个都以一行包含1 <n <200个不同的考试来开始.第2行具有案例k的数量,其中至少有1名学生参加2次考试.然后,将跟随k行,每行包含2个数字,用于指定上述每个案例的一对检查.(n = 0的输入表示输入结束,不进行处理).

输出: 您必须决定是否可以在2个时段进行检查计划.

例:

输入:

3
3
0 1
1 2
2 0
9
8
0 1
0 2
0 3
0 4
0 5
0 6
0 7
0 8
0
Run Code Online (Sandbox Code Playgroud)

输出继电器:

NOT POSSIBLE.
POSSIBLE.
Run Code Online (Sandbox Code Playgroud)

我认为一般的方法是图形着色,但我真的是一个新手,我可能会承认我在理解问题时遇到了一些麻烦.无论如何,我正在努力做到然后提交它.有人可以帮我为这个问题做一些代码吗?我现在必须处理和理解这个算法,以便以后一遍又一遍地使用它.

我更喜欢C或C++,但如果你愿意,Java对我来说很好;)

提前致谢

c++ java algorithm graph

8
推荐指数
2
解决办法
1万
查看次数

在基于0的索引系统中,人们是否将索引0处的元素称为"第一个"或"第0个"元素?

例如,在Java/C++中,你是否随便说这'a'是第一个字符"abc",还是第0个字符?

人们都说两者都是模棱两可的,还是有实际的约定?


来自维基百科关于Zeroth文章的一句话:

在计算机科学中,数组引用通常也从一开始就是0如此,因此计算机程序员可能会在其他人可能首先使用的情况下使用第0个,等等.

这似乎支持这样一种假设,即它总是模糊不清.


感谢Alexandros Gezerlis(请参阅下面的答案)找到这个引用,如何像计算机科学家一样思考: Allen B. Downey,Jeffrey Elkner和Chris Meyers的Python学习,第7章:

第一个字母"banana"不是a.除非你是计算机科学家.出于不正当的原因,计算机科学家总是从零开始计算.第0个字母(零-eth)"banana"b.第1个字母(1-eth)是a,第2个(2-eth)字母是n.

这似乎表明我们作为计算机科学家在处理基于0的索引系统时应该拒绝"第一","第二"等自然语义.

这句话表明,或许还有现在某些语言正式裁决,所以我做了这个问题[language-agnostic].

language-agnostic terminology conventions

8
推荐指数
3
解决办法
339
查看次数

复合赋值的自动(非)装箱失败

由于复合赋值和递增/递减运算符中的隐式转换,以下编译:

byte b = 0;
++b; b++; --b; b--;
b += b -= b *= b /= b %= b;
b <<= b >>= b >>>= b;
b |= b &= b ^= b;
Run Code Online (Sandbox Code Playgroud)

并且由于自动装箱和自动拆箱,以下还编译:

Integer ii = 0;
++ii; ii++; --ii; ii--;
ii += ii -= ii *= ii /= ii %= ii;
ii <<= ii >>= ii >>>= ii;
ii |= ii &= ii ^= ii;
Run Code Online (Sandbox Code Playgroud)

然而,以下代码段中的最后一行给出了编译时错误:

Byte bb = 0;
++bb; bb++; --bb; bb--; // ... okay …
Run Code Online (Sandbox Code Playgroud)

java autoboxing compiler-errors implicit-cast compound-assignment

8
推荐指数
1
解决办法
317
查看次数

这个陈述有意义吗?(Sun的Java变量命名约定)

过去几天我一直在引用Sun的文档中的这一部分,现在我才停下来思考它的内容,我无法理解它.请记住,英语不是我的第一语言.

命名约定

变量:除变量外,所有实例,类和类常量都是小写的第一个字母.

这有什么意义?这不是说这个类名是小写的首字母大小写的吗?就像我应该说出来的那样class myClass?类常量也是大小写的首字母大小写的混合大小写?喜欢而不是Integer.MAX_VALUE,它应该被命名integer.maxValue

它是否真的在说变量本身应如何命名?

我没有正确解析这个或者这实际上是一个明显的错误?

java naming-conventions

8
推荐指数
1
解决办法
1014
查看次数

8
推荐指数
2
解决办法
4095
查看次数

可视化朋友的朋友(foaf)图

我写了一个脚本来导出twitter朋友作为foaf rdf描述.现在我正在寻找一种可视化朋友网络的工具.我试过http://foafscape.berlios.de/但是对于300多个节点来说它真的很慢并且在自动格式化方面做得不好.

有关优秀图形可视化工具的任何提示?如果他们不直接支持foaf,那就没关系,但他们应该能够使用图形节点的图像并能够显示大图.Linux支持会很好.

哦,我正在寻找一种可以手动移动节点的交互式工具.

更新:感谢您的意见.我知道graphviz和静态图像真的很棒.但对于大型数据集,我需要能够选择节点并突出显示所有邻居.

  • Prefuse看起来很棒:http: //prefuse.org/gallery/graphview/
  • 通过prefuse我找到了vizster,这正是我搜索的(只需要找到一些源代码)http://jheer.org/vizster/

visualization rdf semantic-web foaf graph-layout

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

Java String.replaceFirst()采用"从"开始的参数

我需要替换一个字符串中的单词,看起来像"duh duh something else duh".我只需要替换第二个"duh",但第一个和最后一个需要保持不变,因此replace()和replaceFirst()不起作用.有没有像replaceFirst(String regex,String replacement,int offset)这样的方法可以替换从offset开始的第一次替换,或者你可能会推荐其他方法来解决这个问题?谢谢!

java regex string replace

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

数组数组与多维数组的性能比较

当我在大学里使用C++时,我被告知尽可能使用多维数组(特此是MDA),因为它表现出更好的内存局部性,因为它分配在一个大块中.另一方面,阵列阵列(AoA)被分配在多个较小的块中,可能散布在物理存储器中的任何位置,无论何处发现空位.

所以我想第一个问题是:这是一个神话,还是值得关注的建议?

假设它是后者,那么接下来的问题就是如Java这样没有真正MDA的语言.当然,用1DA模拟MDA并不难.从本质上讲,具有MDA的语言的语法糖可以实现为对没有MDA的语言的库支持.

这值得努力吗?对于像Java这样的语言来说,这是一个太低的优化问题吗?我们应该放弃数组并使用Lists甚至原语吗?


另一个问题:在Java中,一次分配AoA(new int[M][N])可能会产生不同的内存分配(而不是分层次地)(new int[M][]; for (... new int[N])

java arrays performance multidimensional-array

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

索引范围的上限始终假定为独占?

所以在Java中,每当给出索引范围时,上限几乎总是独占的.

来自java.lang.String:

substring(int beginIndex, int endIndex)

返回一个新字符串,该字符串是此字符串的子字符串.子字符串从指定的开始,beginIndex并扩展到索引处的字符endIndex - 1

来自java.util.Arrays:

copyOfRange(T[] original, int from, int to)

from- 要复制的范围的初始索引,包括
to- 要复制的范围的最终索引,不包括.

来自java.util.BitSet:

set(int fromIndex, int toIndex)

fromIndex - 要设置的第一个位的索引.
toIndex - 要设置的最后一位之后的索引.

正如您所看到的,它看起来像Java试图使其成为上限是独占的一致约定.

我的问题是:

  • 这是官方权威推荐吗?
  • 是否存在我们应该警惕的明显违规行为?
  • 这个系统有名字吗?(ala"0-based"vs"1-based")

澄清:我完全理解N基于0的系统中的对象集合已被索引0..N-1.我的问题是,如果(2,4)给定范围,它可以是3项或2,具体取决于系统.你怎么称呼这些系统?

再次,问题不是"第一指数0最后指数N-1"与"第一指数1最后指数N"制度; 这就是所谓的基于0和基于1的系统.

问题是"有3个元素(2,4)"与"系统中有2个元素(2,4)".你怎么称呼这些,并且正式批准另一个?

java indexing collections range

7
推荐指数
2
解决办法
1192
查看次数

如何获取间接实现的通用接口的实际类型参数?

我有一个参数化的界面,以多种不同的方式实现.在运行时,我需要弄清楚,给定一个实现该接口的任意对象,接口的实际类型参数是什么.

这是一个解释问题的片段,以及解决问题的中途尝试(也在ideone.com上):

import java.util.*;
import java.lang.reflect.*;

interface Awesome<X> { }
class Base<E> implements Awesome<Set<E>> { }
class Child extends Base<List<Integer>> { }

class AwesomeExample {      
    public static void main(String[] args) {
        Awesome<Set<List<Integer>>> x = new Child();

        System.out.println(
            ((ParameterizedType)
                Child.class.getGenericSuperclass()
            ).getActualTypeArguments()[0]
        );
        // prints "java.util.List<java.lang.Integer>"

        System.out.println(
            ((ParameterizedType)
                Base.class.getGenericInterfaces()[0]
            ).getActualTypeArguments()[0]
        );
        // prints "java.util.Set<E>"        

        investigate(x);
        // we want this to print "Set<List<Integer>>"
    }

    static void investigate(Awesome<?> somethingAwesome) {
        // how to do this?
    }
}
Run Code Online (Sandbox Code Playgroud)

看起来在运行时有足够的泛型类型信息来推断:

  • Child extends Base<List<Integer>>
  • Base<E> …

java generics reflection interface

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