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