如果第一个人把任务委托给第二个人,第二个人再委托给第三个人,第三个人在委托给第四个人.....依次如此,
但是第二个不能将任务委托给第一个人,第三个人不能将任务委托给第一个和第二个,第四个不能委托给前三个,依次如此!这种算法如何解决!希望高手可以指点!
但是第二个不能将任务委托给第一个人,第三个人不能将任务委托给第一个和第二个,第四个不能委托给前三个,依次如此!这种算法如何解决!希望高手可以指点!
你在人这个类里加一个boolean的标识符 委托一次就置为true 委托之前先判断下 只有标识符为false的才能被委托 不就行了
boolean flag =false; for(int i = num;i<role.size();i++){
if(flag){
role(role,num);
}else{
role.get(i)=.....;
}
}
}大体意思,一点愚见.
一个简单的想法是:每一个人都有隐含着的那个委托次序一个数值型ID,那么:那么委托时,被委托人的ID大于委托人,就可以,若小于委托人的ID,则不可以。
public static void main(String[] args){
// 准备所有的代理人
List<String> proxys = new ArrayList<String>();
proxys.add("People1");
proxys.add("People2");
proxys.add("People3");
proxys.add("People4");
proxys.add("People5");
proxys.add("People6");
proxys.add("People7");
// 生成任务链
List<String> taskLink = new ArrayList<String>();
int length = proxys.size();
while (length != 0) {
// 随机取得一个代理人
int maxIndex = length - 1;
int pos = 0;
pos = (int) ((float) Math.random() * maxIndex);
// 将取到的代理人放到任务链中
taskLink.add(proxys.remove(pos));
length--;
} // 打印结果
Iterator<String> it = taskLink.iterator();
while (it.hasNext()) {
System.out.println(it.next());
}
}
public boolean canWeiTuo(int otherPersionId){
boolean canWeiTuo = true;
if(this.myId < otherPersionId){
canWeiTuo = true;
}else{
canWeiTuo = false; }
return canWeiTuo;}
}