Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/ant/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Algorithm 一个候选人和多个面试官?_Algorithm_Recursion_Data Structures_Puzzle_Np Hard - Fatal编程技术网

Algorithm 一个候选人和多个面试官?

Algorithm 一个候选人和多个面试官?,algorithm,recursion,data-structures,puzzle,np-hard,Algorithm,Recursion,Data Structures,Puzzle,Np Hard,有1名候选人将接受n名面试官的面试,因此需要总共n个连续的面试时间,例如下表说明了四个面试官(I1、I2、I3、I4)在四个时间段(S1、S2、S3、S4)的可用性。表中的A 1表示相应的面试官在相应的时间段可用 例如,第一个面试官I1在时间段S1和S2可用 每个面试官只能接受一次面试,所有四个时段都应该依次进行,如S1->S2->S3->S4 在每个时段为面试官找到所有可能的组合。 图中就是这样一个例子 算法 让我们看三组(dig和algo是不同的) s1=数组(“I1”、“I2”、“I3”

有1名候选人将接受n名面试官的面试,因此需要总共n个连续的面试时间,例如下表说明了四个面试官(I1、I2、I3、I4)在四个时间段(S1、S2、S3、S4)的可用性。表中的A 1表示相应的面试官在相应的时间段可用

例如,第一个面试官I1在时间段S1和S2可用

每个面试官只能接受一次面试,所有四个时段都应该依次进行,如S1->S2->S3->S4

在每个时段为面试官找到所有可能的组合。 图中就是这样一个例子

算法

让我们看三组(dig和algo是不同的)

s1=数组(“I1”、“I2”、“I3”)
s2=数组(“I1”、“I2”)
s3=阵列(“I2”、“I3”)
Interviewer_slot=array('slot1'=>s1,'slot2'=>s2,'slot3'=>s3,'slot4'=>null)
count=3//它可以是任何
堆栈=数组()
可能性=数组()
tracked=array();
myoutput=rec_功能(受访者插槽)
函数rec_func($interviewer_slot){
静态时隙=0;
slot++;
可能性=受访者的时间段[“时间段”]
if(可能性!=null)
{   
推送(堆栈、跟踪)
重置(我们的输入);
我们的输入=数组();
用于(i=插槽;iv)
{
if(!in_数组(v,trace))
{
阵列_推送(跟踪,v)
rec_func(我们的_输出)
}
}
}
其他的
{
推送(输出_数组,跟踪)
}       
槽--
跟踪=弹出(堆栈)
我们的输出=json.stringify(输出数组)
返回我们的输出
}

我认为您必须使用搜索树。这是一个C语言的实现#

课堂访谈顺序
{
列出时段;
列表序列;
int iNumbers;//采访/时段数
公众访谈顺序()
{
this.Slots=新列表();
this.Slots.Add(“ABCD”);//可用的面试官
this.Slots.Add(“AB”);//do。。
本条添加(“BC”);
本条。添加(“BCD”);
this.iNumbers=this.Slots.Count;
this.Sequences=新列表();
string slota=this.Slots[0];
foreach(插槽中的字符c)
{
字符串序列=”“+c;
NextInterview(0,序列);
}
foreach(此.Sequences中的字符串seq)
{
控制台写入线(seq);
}
}
私有void NextInterview(int槽,字符串序列)
{
string slota=this.Slots[slot++];
foreach(插槽中的字符c)
{
//面试官没有按顺序预约吗?
if(序列索引of(c)<0)
{
字符串val=序列+c;
if(slot==this.iNumbers-1)//最后一个插槽?
{
这个.Sequences.Add(val);
}
其他的
{                       
NextInterview(插槽,val);//转到下一个插槽
}
}
}
}
}
使用PHP 循环最后一个数组并按相反顺序跟踪每个数组元素以获得结果

<?php
    $s1 = array("I1","I2","I3");
    $s2 = array("I1","I2","I3");
    $s3 = array("I1","I2","I3");
    $interviewr_slot = array('1'=>$s1,'2'=>$s2,'3'=>$s3);   
    $flag = 0;
    $len = count($interviewr_slot);
    for($i = $len; $i>= 1; $i--){
        if($flag == 0){
            foreach ($interviewr_slot[$i] as $key => $value) {
                $myarray[$key] = array($value);             
            }
            $flag = 1;
        }else{
            $checkarray = $myarray;
            unset($myarray);
            $myarray = array();
            foreach ($interviewr_slot[$i] as $key => $value) {
                foreach($checkarray as $k=>$v){
                    if(!in_array($value, $v)){
                        array_push($v, $value);
                        array_push($myarray, $v);
                    }   
                }
            }
        }       
    }
    var_dump($myarray);
?>

那很好。恭喜?你有问题吗?是的,正在寻找最佳选择。没有,只针对一个候选人。请修改“算法”的描述。这太可怕了。任何可以提供的帮助如何在javascript中使用此逻辑
<?php
    $s1 = array("I1","I2","I3");
    $s2 = array("I1","I2","I3");
    $s3 = array("I1","I2","I3");
    $interviewr_slot = array('1'=>$s1,'2'=>$s2,'3'=>$s3);   
    $flag = 0;
    $len = count($interviewr_slot);
    for($i = $len; $i>= 1; $i--){
        if($flag == 0){
            foreach ($interviewr_slot[$i] as $key => $value) {
                $myarray[$key] = array($value);             
            }
            $flag = 1;
        }else{
            $checkarray = $myarray;
            unset($myarray);
            $myarray = array();
            foreach ($interviewr_slot[$i] as $key => $value) {
                foreach($checkarray as $k=>$v){
                    if(!in_array($value, $v)){
                        array_push($v, $value);
                        array_push($myarray, $v);
                    }   
                }
            }
        }       
    }
    var_dump($myarray);
?>
array (size=6)
  0 => 
    array (size=3)
      0 => string 'I3' (length=2)
      1 => string 'I2' (length=2)
      2 => string 'I1' (length=2)
  1 => 
    array (size=3)
      0 => string 'I2' (length=2)
      1 => string 'I3' (length=2)
      2 => string 'I1' (length=2)
  2 => 
    array (size=3)
      0 => string 'I3' (length=2)
      1 => string 'I1' (length=2)
      2 => string 'I2' (length=2)
  3 => 
    array (size=3)
      0 => string 'I1' (length=2)
      1 => string 'I3' (length=2)
      2 => string 'I2' (length=2)
  4 => 
    array (size=3)
      0 => string 'I2' (length=2)
      1 => string 'I1' (length=2)
      2 => string 'I3' (length=2)
  5 => 
    array (size=3)
      0 => string 'I1' (length=2)
      1 => string 'I2' (length=2)
      2 => string 'I3' (length=2)