对于不可判断的问题和NP难题之间的关系,我有点困惑.NP难题是否是不可判定问题的一个子集,或者它们是否相同且相同,还是它们不具有可比性?
对我而言,我一直在与朋友争辩说,不可判断的问题是NP难题的超集.存在一些不是NP难以解决的问题但是不可判定的问题.但我发现这个论点很弱,而且有点困惑.是否存在不完全的NP完全问题.在NP hard中有任何问题是可判定的吗?
一些讨论会有很大的帮助!谢谢!
我试图找到一个解决方案,但无法摆脱我的困扰.
我们给出了两个未排序的整数数组A和B.我们必须检查数组B是否是A的排列.如何做到这一点.甚至对数字进行异或也不会有效,因为可能存在几个具有相同XOR值bt的反例并不是彼此的排列.
解决方案需要O(n)时间和空间O(1)
欢迎任何帮助!! 谢谢.
我需要找到一个高度优化的算法来排序一个只包含0 n 1的数组.
我的解决方案版本是计算编号.零(比如说x)和(比如说y).完成后,在数组中放置x零,然后输入y 1s.这使它成为O(n).
任何运行比这更好的算法??? 我在面试中被问到这个问题.
我有形式的字符串000011122222.也就是说,连续数字重复随机没有.时间.其他一些例子可能是:
0011122223333
01222
00011234444
001122222
Run Code Online (Sandbox Code Playgroud)
等等.我知道,对于一个字符串01222来说,总共可以进行5!/3!排列.我需要为每个这样的字符串生成所有这些排列.
我已尝试通过各种方法生成排列.一种是通过生成所有可能的排列(就像没有重复的字符串一样),但由于我将使用的字符串可能非常大,这可能浪费时间产生太多的冗余排列.
其次,我尝试将数字放在字符数组的随机索引处等于字符串的大小,并在数字计数与输入字符串相同时终止循环.但是,这样我浪费了大量的内存,也占用了大量的时间.
我需要一种有效的方法来为这些字符串生成排列.只是一个算法或代码,欢迎.我正在使用Java.
谢谢!
我试图在java中模拟CPU调度算法,并使用多线程.我已经成功实施了FCFS(先到先服务)和SJF(最短工作优先).但问题是当我开始考虑SRTF(最短剩余时间优先)时,这是SJF的先发制人形式.我使用以下模型:
CLOCK变量,每个都保持滴答声(一个简单的时钟增量)100ms.我有一个boolean isAvailable;标志,用于在开始执行之前检查CPU是否可用的进程.isAvailableCPU 的标志.如果true,它将标志设置为false并开始执行(为此我只是让线程休眠,(100 * burstTime) ms因为这只是一个模拟).否则,进程只是忙着等待: while(CPU.isAvailable != true);.我手头上有进程列表以及它们的到达和突发时间.在我模拟非抢占式调度(FCFS和SJF)之前是可以的.但是当我尝试SRTF时,我无法找到一种方法来抢占当前正在运行的进程线程.
对于SRTF,我知道从ReadyQueue中选择下一个流程的方法.我可以尝试将isAvailable标志设置为false从队列中选择一个进程,但是我怎么知道哪个线程最初在执行?由于我没有使用很多同步黑白线程,我将使用该CPU线程有多个进程.它有点搞砸了.请帮忙.谢谢!
这是进程的代码:
enum State {ARRIVED, WAITING, READY, RUNNING, EXECUTED}
public class Process implements Runnable
{
int pid;
int arrTime;
int burstTime;
int priority;
long startTime;
long endTime;
State procState = null;
Process(int pid, int arrTime, int burstTime, int priority)
{
this.pid = pid;
this.arrTime = arrTime;
this.burstTime …Run Code Online (Sandbox Code Playgroud) 我是ubuntu 10.10的新手,并将其用作VM.我尝试安装jdk 1.7从终端运行java程序.我按照链接中的说明操作:如何在Ubuntu Linux上安装Oracle Java.安装完成后,我尝试测试运行Hello World java程序.当我这样做时,该程序编译成功javac Hello.java.但是,当我尝试使用该程序时java Hello,它没有在终端上给出任何输出并给了我以下内容:
无法启动应用程序.
例外:
CouldNotLoadArgumentException[ Could not load file/URL specified: Hello]
at com.sun.javaws.Main.launchApp(Unknown Source)
at com.sun.javaws.Main.continueInSecureThread(Unknown Source)
at com.sun.javaws.Main$1.run(Unknown Source)
at java.lang.Thread.run(Thread.java:722)
Run Code Online (Sandbox Code Playgroud)
包裹异常
java.io.FileNotFoundException: Hello (No such file or directory)
at java.io.FileInputStream.open(Native Method)
at java.io.FileInputStream.<init>(FileInputStream.java:138)
at java.io.FileInputStream.<init>(FileInputStream.java:97)
at com.sun.javaws.jnl.LaunchDescFactory.buildDescriptor(Unknown Source)
at com.sun.javaws.Main.launchApp(Unknown Source)
at com.sun.javaws.Main.continueInSecureThread(Unknown Source)
at com.sun.javaws.Main$1.run(Unknown Source)
at java.lang.Thread.run(Thread.java:722)
Run Code Online (Sandbox Code Playgroud)
此外,我尝试检查我的版本java使用java -version,它给出了以下输出:
Java(TM) Web Start 10.0.0.147-fcs
Usage: javaws [run-options] <jnlp-file>
javaws [control-options] …Run Code Online (Sandbox Code Playgroud) 我写了一个简单的bash脚本,除了睡觉之外什么都不做.
#!/bin/bash
echo "Sleeping..."
sleep 180s
Run Code Online (Sandbox Code Playgroud)
运行脚本后,我看到系统上运行了两个进程:
user 22880 0.0 0.0 12428 1412 pts/28 S+ 20:12 0:00 /bin/bash ./sleep.sh
user 22881 0.0 0.0 7196 356 pts/28 S+ 20:12 0:00 sleep 180s
Run Code Online (Sandbox Code Playgroud)
我通过使用哪个来杀死进程SIGTERM来给id 进程.但是,在此之后,我仍然看到运行的sleep命令在180秒后退出.22880kill -15 22880
user 22881 0.0 0.0 7196 356 pts/28 S 20:12 0:00 sleep 180s
Run Code Online (Sandbox Code Playgroud)
为什么会这样?如果不让sleep 180s流程继续运行,我需要做什么?
我是UNIX编程的新手,我正在阅读僵尸进程以及如何使用fork()两次避免它们.我从一本书中读取代码并试图在我的系统上运行它..我正在使用ubuntu 12.04.我运行了以下代码:
#include<stdio.h>
#include<sys/wait.h>
#include<stdlib.h>
int main()
{
pid_t pid;
if(pid = fork() < 0)
printf("Fork Error.!!!\n");
else
if(pid == 0)
{
if((pid = fork()) < 0)
printf("Fork2 Error.!!!\n");
else
if(pid > 0)
exit(0);
sleep(2);
printf("Second Child, parent id: %d\n", getppid());
exit(0);
}
if(waitpid(pid, NULL, 0) != pid)
printf("Waitpid Error.!!!\n");
exit(0);
}
Run Code Online (Sandbox Code Playgroud)
我得到的输出如下:
Second Child, parent id: 1
Second Child, parent id: 1
Run Code Online (Sandbox Code Playgroud)
这本书说这应该只打印一次,这也是我觉得当我看到代码中发生了什么时应该发生的事情.我不明白为什么它会被打印两次.我在网上的许多地方发现了这个代码,但无法解释这个问题.欢迎任何帮助.谢谢.!!
我有一个问题,我想弄明白.
在Form1,我尝试运行一些方法Form2.
例:
表格1:
`Form2.SomeMethod(name);`
Run Code Online (Sandbox Code Playgroud)
表格2
这是一个我正在调用的方法,Form1在这个方法中我调用了其他应该做的事情的方法.
public static void SomeMethod(string name)
{
new Form2().method2(name);
}
Run Code Online (Sandbox Code Playgroud)
这种方法不能正常工作
public void method2(string naziv)
{
MessageBox.Show("test? "+naziv); //only for test. This works
Button x = new Button();
x.Margin = new Thickness(50, 20, 0, 0);
x.VerticalAlignment = VerticalAlignment.Top;
x.HorizontalAlignment = HorizontalAlignment.Left;
x.MinHeight = 50;
x.MinWidth = 100;
x.MaxWidth = 150;
x.FontSize = 20;
x.Content = naziv;
x.Name = "naziv";
gridmiza.Children.Add(x);
lbltest1.Content = "test? "+naziv; //only for test
MessageBox.Show("test2?"); …Run Code Online (Sandbox Code Playgroud)