歪楼换种方式给大家讲。希望大家打着游戏,就学会了:D
题目描述
这题啊,大家就当做是 打游戏的 不同俩帮派。
大家可以 单独混, 也可以组团 打副本,帮派吞并啥的。
每一个玩家(网络中的结点)
默认是 独立成家的。
如果组队了,获得的经验是 共享但不削弱了。
即: 一人砍死怪,大家一起涨经验!
如果两个结点连接,就是 俩帮派或者理解为俩队伍 合并就可以了。
然后让新的成员,绑定到一个团队中就可以。
如此反复,也就变成了两件事。
要么砍怪升级, 要么 组队。
样例
然后讲完了。。
看广告或者看代码吧。。
想学服务器后端开发的 加 xiaodaidai87v5
零基础教学,包括数据结构、算法、性能优化、分布式、网络通信、一直到百万级同时在线 等等。
全程由小米前项目经理教学(也就是我啦),目前费用26400(2020-7-23),每月1日涨10%学费
JAVA 代码
package 步云版;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int size = in.nextInt();
int frequency = in.nextInt();
Node[] nodeArray = new Node[size+1];
for(int i=0;i<=size;i++) {
nodeArray[i]= new Node();
}
while (frequency > 0) {
int option = in.nextInt();
int parameter1 = in.nextInt();
int parameter2 = in.nextInt();
if (option == 1) {
connect(nodeArray, parameter1, parameter2);
}
if (option == 2) {
nodeArray[parameter1].sendMessage(parameter2);
}
frequency--;
}
StringBuffer sb= new StringBuffer();
for (int i=1;i<nodeArray.length;i++) {
Node node = nodeArray[i];
sb.append(node.mesSize + " ");
}
System.out.print(sb);
}
public static void connect(Node[] nodeArray, int id1, int id2) {
//结婚
if (nodeArray[id1].family == null && nodeArray[id2].family == null) {
// 两者都空,建一个新的
List<Node> list = new ArrayList<Node>();
list.add(nodeArray[id1]);
list.add(nodeArray[id2]);
nodeArray[id1].family = list;
nodeArray[id2].family = list;
return;
}
if (nodeArray[id1].family == nodeArray[id2].family) {
return;
}
if (nodeArray[id1].family == null && nodeArray[id2].family != null) {
nodeArray[id2].family.add(nodeArray[id1]);
nodeArray[id1].family = nodeArray[id2].family;
return;
}
if(nodeArray[id2].family == null && nodeArray[id1].family != null) {
nodeArray[id1].family.add(nodeArray[id2]);
nodeArray[id2].family = nodeArray[id1].family;
return;
}
nodeArray[id1].family.addAll(nodeArray[id2].family);
// 让 二号家族的全部改为一号家族
for(Node node:nodeArray[id2].family) {
node.family=nodeArray[id1].family;
}
}
}
class Node {
// 所属圈子,如果为null则为独立圈子
public List[HTML_REMOVED] family;
public int mesSize = 0;
public void sendMessage(int size) {
if (family == null) {
//mesSize += size;
return;
}
for (Node node : family) {
node.mesSize += size;
}
}
}
代码被系统 改了 一丢丢, 我想你们也能看懂