현재 Deep first search 알고리즘 사용에 문제가 있습니다. 시나리오는 사용자에게 친구 목록이 있다는 것입니다. 그리고 수신자가 당신의 친구이거나 친구 친구 친구 친구 인 경우에만 메시지를 보낼 수 있습니다. 그러면 메시지를 보낼 수 있습니다. 내가 생각하기에 페이스 북에서와 비슷합니다. 내가 지금까지 한 일 :
public boolean sendMessage(Message message, User receiver) {
Stack s = new Stack();
if(this.getFriends().size() > 0 ){
return false;
}else if(this.getFriends().contains(receiver)){
receiver.getMessagebox().add(message);
this.getMessagebox().add(message);
return true;
}else if(checkFriendsCircle(receiver,this,s)){
receiver.getMessagebox().add(message);
this.getMessagebox().add(message);
return true;
}else{
return false;
}
}
private boolean checkFriendsCircle(User receiver, User user, Stack s){
ArrayList<User> friendslist = user.getFriends();
if(!s.contains(this)){
s.push(this);
}
for (User user2 : friendslist) {
if(!s.contains(user2)){
if(user2.getFriends().contains(receiver)){
return true;
}else{
checkFriendsCircle(receiver,user2,s);
}
}
}
return false;
}
방법에 문제가있을 수 있다고 생각합니다 checkFriendsCircle
. 재귀 호출은 checkFriendsCircle(user,user2.getFriends(),s);
대신입니다 checkFriendsCircle(user2,user2.getFriends(),s);
. 실제로 한 단계 이상의 우정을 확인하지 않습니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다