给定一个含有N<=100个用户的朋友列表<=100,对于一个指定用户,找到这个用户最可能认识的人。最可能认识的人定义为这个人和当前用户不是朋友关系(a是b的朋友,b是a的朋友),但是有最多共同朋友。如果用户和所以人都没有共同朋友返回-1.
输入:
5 0
1 2 34 04 04 01 2 3输出:
4c++代码
/*5 01 2 34 04 04 01 2 3*/#include#include #include #include #include #include using namespace std;int n,m;string a[110];int main(){ scanf("%d%d", &n,&m); getchar(); for (int i=0; i maxs) { maxs=count; mark=k; } } printf("%d\n",mark); return 0;}
java代码:
import java.util.ArrayList;import java.util.HashMap;import java.util.Iterator;import java.util.Map;import java.util.Map.Entry;import java.util.Scanner;public class QuestionThree { public static void main(String[] args) { Scanner in=new Scanner(System.in); int n=in.nextInt(); int k=in.nextInt(); in.nextLine(); HashMap> inputMap=new HashMap<>(); for(int i=0;i tempList=new ArrayList(); for(String val:s.split(" ")) tempList.add(Integer.parseInt(val)); if(i==k||!tempList.contains(k)) inputMap.put(i,tempList); } System.out.println(find(k, inputMap)); } public static int find(int k, HashMap > inputMap) { ArrayList kList=inputMap.get(k); Iterator iter=inputMap.entrySet().iterator(); int index=Integer.MAX_VALUE; int maxFriends=0; while (iter.hasNext()) { Map.Entry entry=(Map.Entry) iter.next(); ArrayList tempList=(ArrayList ) entry.getValue(); int count=0; if((int)entry.getKey()==k) continue; for(int val:tempList) if(kList.contains(val)) count++; if(count>maxFriends) { maxFriends=count; index=(int) entry.getKey(); } if(maxFriends==count&&index>(int)entry.getKey()) index=(int)entry.getKey(); } return index; }}