-
lemon_tree说:
T(n)=T(n/3) + 100的时间复杂度怎么算
O(log3n)
-
坏人说:
一个卖牛奶的人告诉两个小学生:这儿的一个钢桶里盛着水,另一个钢桶里盛着牛奶,由于牛奶乳脂含量过高,必须用水稀释才能饮用.现在我把A桶里的液体倒入B桶,使其中液体的体积翻了一番,然后我又把B桶里的液体倒进A桶,使A桶内的液体体积翻番.最后,我又将A桶中的液体倒进B桶中,使B桶中液体的体积翻番.此时我发现两个桶里盛有同量的液体,而在B桶中,水比牛奶多出1升.现在要问你们,开始时有多少水和牛奶,而在结束时,每个桶里又有多少水和牛奶?
开始时A桶里有2升水,B桶里有1升牛奶;结束时A桶里有3升水,B桶里有2升水和1升牛奶。
-
lemon_tree说:
T(n)=T(n/3) + 100的时间复杂度怎么算?可以给出详细的过程吗?
T(n) = T(n/3) + 100
根据Master Theorem,设T(n)的时间复杂度为O(f(n)),则有:
f(n) = n^log3_100 + 100
根据log3_100 = log3_2 * log2_100 = log2_100,
即f(n) = n^log2_100 + 100
因此,T(n)的时间复杂度为O(n^log2_100 + 100)。
-
ivan说:
c#编写一个串口转网络透传程序
using System;
using System.IO.Ports;
using System.Net;
using System.Net.Sockets;
using System.Threading;namespace SerialToNet
{
class Program
{
static void Main(string[] args)
{
Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
IPEndPoint endPoint = new IPEndPoint(IPAddress.Parse("127.0.0.1"), 8888);
socket.Bind(endPoint);
socket.Listen(100);
Console.WriteLine("服务器已启动,等待客户端连接...");// 建立串口 SerialPort serialPort = new SerialPort("COM1", 9600, Parity.None, 8, StopBits.One); serialPort.Open(); while (true) { // 接受客户端连接 Socket clientSocket = socket.Accept(); Console.WriteLine("连接上一个客户端"); // 客户端接收数据线程 Thread receiveThread = new Thread(ReceiveData); receiveThread.IsBackground = true; receiveThread.Start(clientSocket); // 串口接收数据线程 Thread serialPortThread = new Thread(SerialPortReceiveData); serialPortThread.IsBackground = true; serialPortThread.Start(serialPort); } } /// /// 客户端接收数据线程 /// /// static void ReceiveData(object obj) { Socket clientSocket = obj as Socket; while (true) { byte[] buffer = new byte[1024 * 1024 * 2]; int r = clientSocket.Receive(buffer); if (r == 0) { break; } Console.WriteLine("收到客户端:{0}", Encoding.UTF8.GetString(buffer, 0, r)); } } /// /// 串口接收数据线程 /// /// static void SerialPortReceiveData(object obj) { SerialPort serialPort = obj as SerialPort; while (true) { string data = serialPort.ReadExisting(); if (!string.IsNullOrEmpty(data)) { Console.WriteLine("收到串口:{0}", data); } } } }
}
-
坏人说:
一个卖牛奶的人告诉两个小学生:这儿的一个钢桶里盛着水,另一个钢桶里盛着牛奶,由于牛奶乳脂含量过高,必须用水稀释才能饮用.现在我把A桶里的液体倒入B桶,使其中液体的体积翻了一番,然后我又把B桶里的液体倒进A桶,使A桶内的液体体积翻番.最后,我又将A桶中的液体倒进B桶中,使B桶中液体的体积翻番.此时我发现两个桶里盛有同量的液体,而在B桶中,水比牛奶多出1升.现在要问你们,开始时有多少水和牛奶,而在结束时,每个桶里又有多少水和牛奶?可以给出详细的过程吗?
开始时:A桶里有3升水,B桶里有2升牛奶。
步骤1:把A桶里的水倒入B桶,使B桶里的液体体积翻一番,即B桶里有6升液体,其中4升为水,2升为牛奶。
步骤2:把B桶里的液体倒进A桶,使A桶里的液体体积翻一番,即A桶里有6升液体,其中4升为牛奶,2升为水。
步骤3:将A桶中的液体倒进B桶中,使B桶中液体的体积翻一番,即B桶里有12升液体,其中8升为水,4升为牛奶。
结束时:A桶里有4升牛奶,B桶里有8升水,多出1升水。
-
ivan说:
c# 串口和网络双向传输程序
实现 c# 串口和网络双向传输程序的方法如下:
-
使用 System.IO.Ports 命名空间下的 SerialPort 类,建立串口和程序之间的连接;
-
使用 NetworkStream 和 TcpClient 建立与网络的连接;
-
创建一个新线程,来实现串口和网络之间的双向传输;
-
在串口端,使用 SerialPort 类的 Read 或 ReadLine 方法,来读取串口传输的数据;
-
将读取的数据,写入网络端的缓冲区;
-
在网络端,使用 NetworkStream 类的 Read 方法,来读取网络传输的数据;
-
将读取的数据,写入串口端的缓冲区;
-
释放线程资源,关闭串口和网络连接。
-