题目链接
思路
动态规划,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 {
}
}
}