我正在实现DAG,并想知道以下是否是用Java表示它的唯一方法:
class Node{
List<Node> parents;
List<Node> successors;
int value; }
class DAG{
Node root; // assuming only one root exists
}
Run Code Online (Sandbox Code Playgroud)
我正在寻找更简单的东西,没有两个父母和孩子的名单.
可能吗?此外,我有一个问题,如果我到达一个特定的节点x,并希望从x到根节点的路径,我怎么能找到它而不经过所有父节点设置?
我正在尝试构建一个库来解决不同的约束问题.我首先尝试了4皇后问题,我无法弄清楚我如何能代表节点.我的意思是我可以在没有任何树类(通过维数组)的情况下完成它,但我想将其表示为树结构问题.
树的深度总是<= 4
这是我的代码:
class Node {
Node []next ;
int value;
int depth;
String name;
Node(){
next=null;
value=0;
depth=0;
name=null;
}
Node(int value,int depth,String name){
this.value=value;
//this.next=child;
this.depth=depth;
this.name=name;
}
class Tree{
Node root;
Stack stack;
String[] vars={"Q1","Q2","Q3","Q4"};
int[] domain={1,2,3,4};
int count=0;
Tree(){
root=new Node();
stack=new Stack();
}
Run Code Online (Sandbox Code Playgroud)
void start(){stack.push(root); 计数++; 搜索(stack.pop(),0); }
boolean consistent(节点当前){boolean flag = true; int n = current.getDepth(); //需要更多的回归旗帜; }
private void search(Node current,int num) {
if(num==3&&consistent(current)){
System.out.println("solution !");
num=0;
}
else{
if(consistent(current)){
Node child[]=new …Run Code Online (Sandbox Code Playgroud) 我的问题与此有关.但是,我正在寻找一种方法来将文本文件追加到几次运行.有没有办法将控制台输出写入文本文件而不删除旧的运行信息?我正在研究30多个课程,改变System.out.println陈述会很乏味,所以我更喜欢坚持使用System.setOut解决方案.
我有以下基于@Mac答案的代码
PrintStream out = new PrintStream(new FileOutputStream("aa.txt"),true);
System.setOut(out);
Run Code Online (Sandbox Code Playgroud)
但文件aa.txt没有附加结果,我在这里遗漏了什么?