我正在训练像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对我来说很好;)
提前致谢
例如,在Java/C++中,你是否随便说这'a'是第一个字符"abc",还是第0个字符?
人们都说两者都是模棱两可的,还是有实际的约定?
在计算机科学中,数组引用通常也从一开始就是
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].
由于复合赋值和递增/递减运算符中的隐式转换,以下编译:
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
过去几天我一直在引用Sun的文档中的这一部分,现在我才停下来思考它的内容,我无法理解它.请记住,英语不是我的第一语言.
变量:除变量外,所有实例,类和类常量都是小写的第一个字母.
这有什么意义?这不是说这个类名是小写的首字母大小写的吗?就像我应该说出来的那样class myClass?类常量也是大小写的首字母大小写的混合大小写?喜欢而不是Integer.MAX_VALUE,它应该被命名integer.maxValue?
它是否真的在说变量本身应如何命名?
我没有正确解析这个或者这实际上是一个明显的错误?
在Java类型参数中,是否仅表示严格的子类型?还是E也足够了?
我写了一个脚本来导出twitter朋友作为foaf rdf描述.现在我正在寻找一种可视化朋友网络的工具.我试过http://foafscape.berlios.de/但是对于300多个节点来说它真的很慢并且在自动格式化方面做得不好.
有关优秀图形可视化工具的任何提示?如果他们不直接支持foaf,那就没关系,但他们应该能够使用图形节点的图像并能够显示大图.Linux支持会很好.
哦,我正在寻找一种可以手动移动节点的交互式工具.
更新:感谢您的意见.我知道graphviz和静态图像真的很棒.但对于大型数据集,我需要能够选择节点并突出显示所有邻居.
我需要替换一个字符串中的单词,看起来像"duh duh something else duh".我只需要替换第二个"duh",但第一个和最后一个需要保持不变,因此replace()和replaceFirst()不起作用.有没有像replaceFirst(String regex,String replacement,int offset)这样的方法可以替换从offset开始的第一次替换,或者你可能会推荐其他方法来解决这个问题?谢谢!
当我在大学里使用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中,每当给出索引范围时,上限几乎总是独占的.
来自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试图使其成为上限是独占的一致约定.
我的问题是:
澄清:我完全理解N基于0的系统中的对象集合已被索引0..N-1.我的问题是,如果(2,4)给定范围,它可以是3项或2,具体取决于系统.你怎么称呼这些系统?
再次,问题不是"第一指数0最后指数N-1"与"第一指数1最后指数N"制度; 这就是所谓的基于0和基于1的系统.
问题是"有3个元素(2,4)"与"系统中有2个元素(2,4)".你怎么称呼这些,并且正式批准另一个?
我有一个参数化的界面,以多种不同的方式实现.在运行时,我需要弄清楚,给定一个实现该接口的任意对象,接口的实际类型参数是什么.
这是一个解释问题的片段,以及解决问题的中途尝试(也在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 ×8
generics ×2
algorithm ×1
arrays ×1
autoboxing ×1
c++ ×1
collections ×1
conventions ×1
extends ×1
foaf ×1
graph ×1
graph-layout ×1
indexing ×1
interface ×1
performance ×1
range ×1
rdf ×1
reflection ×1
regex ×1
replace ×1
semantic-web ×1
string ×1
super ×1
terminology ×1