题目链接
思路
动态规划,d[i][j]表示在选取第j个数字的情况下,将前j个数字分成i组的最大和, 考虑第j个数字加入,得到状态转移方程
dp[i][j]=max(dp[i][j-1],dp[i-1][i-1~j-1])+num[i];
前面部分就是把当前这个数与前面一个子序列连续起来,后面一个则是另起一个序列
你最愿意做的哪件事,才是你的天赋所在
TCP的数据传送使用的是流,也就是通过DataInputStream,DataOutputStream来传递。
在服务器端,我们需要绑定监听端口,然后就可以获取该端口的输入流和输出流。
ServerSocket 是创建一个socket的服务,指定监听窗口。
然后用该对象能够返回一个Socket,通过这个Socket中的信息来通信1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44package Socket;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.net.*;
public class Server {
	public static void main(String[] args) {
		ServerSocket socket = null;
		Socket socket2 = null;
		try {
			//此处可以直接改为try-with-resoutce形式,避免使用finally语句关闭资源
			socket = new ServerSocket(8000);
			//创建一个ServerSocket对象,指定监听端口,与客户端程序保持一致
			System.out.println("Listening on port 8000");
			socket2 = socket.accept();
			//监听并等待接受连接:accept
			DataInputStream in = new DataInputStream(socket2.getInputStream());
			DataOutputStream out = new DataOutputStream(socket2.getOutputStream());
			//创建Data Input/Output 流
			double radius = in.readDouble();
			//从客户端接受圆的半径(通过DataInput流读取)
			double area = radius*radius*Math.PI;
			//计算圆的面积
			out.writeDouble(area);
			//把圆面积发给客户端
			System.out.println("Send Area:"+area+" to client");
			//输出提示信息
			// 加入while循环,使得服务器不断接收半径并且发送面积
			// 从客户端接受圆的半径
			//半径小于0,则退出循环
			//计算圆的面积
			//把面积发送给客户端
			//输出提示信息
			in.close();
			out.close();
			socket2.close();
			socket.close();
		} catch (Exception e) {
			e.printStackTrace();
		}finally {
		}
	}
}