关于一个迭代的算法问题

一时懿亮 2009-11-18 10:53:11
如果第一个人把任务委托给第二个人,第二个人再委托给第三个人,第三个人在委托给第四个人.....依次如此,
但是第二个不能将任务委托给第一个人,第三个人不能将任务委托给第一个和第二个,第四个不能委托给前三个,依次如此!

这种算法如何解决!希望高手可以指点!
...全文
203 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
hejunlong007 2009-11-20
  • 打赏
  • 举报
回复
每个人都有一个id, id小的可以委托大的,

Class Person{

private int myId;


public boolean canWeiTuo(int otherPersionId){

boolean canWeiTuo = true;

if(this.myId < otherPersionId){
canWeiTuo = true;
}else{
canWeiTuo = false;

}
return canWeiTuo;

}
}
ctlu2ct2t 2009-11-20
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 cangyingzhijia 的回复:]
参考《java与模式》中的第12章 Chain of Responsibility(责任链)模式
[/Quote]
真的吗?!
  • 打赏
  • 举报
回复



学士服
darxin 2009-11-20
  • 打赏
  • 举报
回复
这是一个取随机数的问题


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());
}
}
knightzhuwei 2009-11-19
  • 打赏
  • 举报
回复
这什么跟什么。。
你在人这个类里加一个boolean的标识符 委托一次就置为true 委托之前先判断下 只有标识符为false的才能被委托 不就行了
老秋先生 2009-11-19
  • 打赏
  • 举报
回复
我知道了!!

保证数据 只有一个
作为全局对象!!

互相传递!!
不就解决拉

算法嘛!

这样!!
比如 第一个人 要将任务委托给第二个人 第三个 第四个的时候嘛
弄个循环 分别 给他们委托
第二个人 也一样 分别给他们委托 包括第一个!!

不就可以拉


新手 乱回 别介意撒!
zhuyouyong 2009-11-19
  • 打赏
  • 举报
回复
路过帮顶
苍蝇①号 2009-11-19
  • 打赏
  • 举报
回复
参考《java与模式》中的第12章 Chain of Responsibility(责任链)模式
sangshusen_1988 2009-11-19
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 jiangnaisong 的回复:]
引用楼主 yuezhi 的回复:
    如果第一个人把任务委托给第二个人,第二个人再委托给第三个人,第三个人在委托给第四个人.....依次如此,
但是第二个不能将任务委托给第一个人,第三个人不能将任务委托给第一个和第二个,第四个不能委托给前三个,依次如此!

这种算法如何解决!希望高手可以指点!


显然楼主的这个要求中,隐含着一个次序(即所谓的第一个,第二个。。。)
一个简单的想法是:每一个人都有隐含着的那个委托次序一个数值型ID,那么:那么委托时,被委托人的ID大于委托人,就可以,若小于委托人的ID,则不可以。
[/Quote]
这个貌似可行
云上飞翔 2009-11-19
  • 打赏
  • 举报
回复
[Quote=引用楼主 yuezhi 的回复:]
    如果第一个人把任务委托给第二个人,第二个人再委托给第三个人,第三个人在委托给第四个人.....依次如此,
但是第二个不能将任务委托给第一个人,第三个人不能将任务委托给第一个和第二个,第四个不能委托给前三个,依次如此!

这种算法如何解决!希望高手可以指点!

[/Quote]
显然楼主的这个要求中,隐含着一个次序(即所谓的第一个,第二个。。。)
一个简单的想法是:每一个人都有隐含着的那个委托次序一个数值型ID,那么:那么委托时,被委托人的ID大于委托人,就可以,若小于委托人的ID,则不可以。
yangming272727 2009-11-19
  • 打赏
  • 举报
回复
svrmgrl connect internal startup exit
wifewifewife 2009-11-19
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 knightzhuwei 的回复:]
这什么跟什么。。
你在人这个类里加一个boolean的标识符 委托一次就置为true 委托之前先判断下 只有标识符为false的才能被委托 不就行了
[/Quote]
感觉这种可行性比较好.
bunrise 2009-11-19
  • 打赏
  • 举报
回复
public void role(Array role,int num){
boolean flag =false;

for(int i = num;i<role.size();i++){
if(flag){
role(role,num);
}else{
role.get(i)=.....;
}
}
}

大体意思,一点愚见.
一时懿亮 2009-11-19
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 sand1415 的回复:]
意思是不是前面的可以往后委托,但是后面的不能在委托给前面的,那他可不可以从第一个直接委托给第三个呢????
[/Quote]
可以啊!就是第一个给第二个,第二个可以给第三个,但是第三个不能给第一个和第二个!
zl3450341 2009-11-19
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 knightzhuwei 的回复:]
这什么跟什么。。
你在人这个类里加一个boolean的标识符 委托一次就置为true 委托之前先判断下 只有标识符为false的才能被委托 不就行了
[/Quote]

可行 up
sand1415 2009-11-19
  • 打赏
  • 举报
回复
意思是不是前面的可以往后委托,但是后面的不能在委托给前面的,那他可不可以从第一个直接委托给第三个呢????
crazylaa 2009-11-18
  • 打赏
  • 举报
回复
定义个history的String啥的。每次委托的时候,检查被委托id在history里面是否存在,如果存在就不委托,如果不存在就委托且在history里面追加这个委托id。

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧