课程内容提交

This commit is contained in:
LSGOMYP
2020-07-31 17:39:54 +08:00
parent 08f25ef85d
commit 67216f9224
74 changed files with 8975 additions and 1 deletions

View File

@@ -0,0 +1,283 @@
# Task01<30><31><EFBFBD><EFBFBD><EFBFBD>飨1<E9A3A8>
## 1. <20><><EFBFBD><EFBFBD><EFBFBD>Ķ<EFBFBD><C4B6><EFBFBD>
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ǿ<EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD>˳<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɶ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɵļ<EFBFBD><EFBFBD>ϣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ķ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ԫ<EFBFBD>ء<EFBFBD>
<EFBFBD><EFBFBD><EFBFBD>
- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧһά<D2BB><CEAC><EFBFBD><EFBFBD>
- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6>ά<EFBFBD><CEAC><EFBFBD><EFBFBD>
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾȺ<EFBFBD><EFBFBD><EFBFBD>Ĺ<EFBFBD><EFBFBD>ԣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͬһ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͣ<EFBFBD><EFBFBD>±<EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ĸ<EFBFBD><EFBFBD>ԣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ռ<EFBFBD>ж<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ĵ<EFBFBD>Ԫ<EFBFBD><EFBFBD>
## 2. <20><><EFBFBD><EFBFBD><EFBFBD>Ĵ洢
**2.1 nά<6E><CEAC><EFBFBD><EFBFBD><EFBFBD>Ķ<EFBFBD><C4B6><EFBFBD>**
<EFBFBD>±<EFBFBD><EFBFBD><EFBFBD>n<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊnά<EFBFBD><EFBFBD><EFBFBD>
<EFBFBD><EFBFBD><EFBFBD>
- `int[] a = new int[10]; //һά<D2BB><CEAC><EFBFBD><EFBFBD>ߣ<EFBFBD>`
- `int[ , ] a = new int[2,3];//<2F><>ά<EFBFBD><CEAC><EFBFBD><EFBFBD> <20><><EFBFBD>棩`
- `int[ , , ] a = new int[2,3,4];//<2F><>ά<EFBFBD><CEAC><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><E5A3A9><EFBFBD><EFBFBD><EFBFBD>ȣ<EFBFBD><C8A3><EFBFBD><EFBFBD><E5A3A9>2.ҳ<><D2B3> 3.<2E><> 4.<2E>С<EFBFBD>`
**2.2 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E6B4A2><EFBFBD>ص<EFBFBD>**
- <20><><EFBFBD><EFBFBD>Ԫ<EFBFBD><D4AA><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD><DAB4>а<EFBFBD>˳<EFBFBD><CBB3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E6B4A2>
- <20><><EFBFBD><EFBFBD><EFBFBD>Ĵ洢<C4B4><E6B4A2><EFBFBD><EFBFBD><E4B0B4><EFBFBD>У<EFBFBD>C<EFBFBD><43>C++<2B><>C#<23>ȣ<EFBFBD><C8A3><EFBFBD><EFBFBD>У<EFBFBD>Forturn<72>ȣ<EFBFBD><C8A3><EFBFBD><EFBFBD>С<EFBFBD>
- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>׵<EFBFBD>ַ<EFBFBD><D6B7><EFBFBD>dz<EFBFBD><C7B3><EFBFBD><EFBFBD><EFBFBD>
**2.3 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ĵ洢**
<u>һά<D2BB><CEAC><EFBFBD><EFBFBD>`a[n]`</u>
<EFBFBD><EFBFBD>Ԫ<EFBFBD>ذ<EFBFBD><EFBFBD>½DZ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>δ<EFBFBD><EFBFBD>š<EFBFBD>
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>`int[] a = new int[5];`
![һά<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>](https://img-blog.csdnimg.cn/20191218195949938.png)
<u><3E><>ά<EFBFBD><CEAC><EFBFBD><EFBFBD>`a[m,n]`</u>
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>`int[ , ] a = new int[2,3];`
![<EFBFBD><EFBFBD>ά<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>](https://img-blog.csdnimg.cn/20191218200106993.png)
<u><3E><>ά<EFBFBD><CEAC><EFBFBD><EFBFBD>`a[m,n,l]`</u>
<EFBFBD><EFBFBD>һά<EFBFBD>±<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ά<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һά<EFBFBD><EFBFBD><EFBFBD>±<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>`int[ , , ] a = new int[2,3,4];`
![<EFBFBD><EFBFBD>ά<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ĵ洢](https://img-blog.csdnimg.cn/20191218200209131.png)
## 3. <20><>̬<EFBFBD><CCAC><EFBFBD><EFBFBD><EFBFBD>붯̬<EBB6AF><CCAC><EFBFBD><EFBFBD>
**3.1 <20><>̬<EFBFBD><CCAC><EFBFBD><EFBFBD>**
<EFBFBD>ڳ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ռ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
`int[] a = new int[10];//<2F><>̬<EFBFBD><CCAC><EFBFBD><EFBFBD><E9A3A8><EFBFBD><EFBFBD>֮<EFBFBD><D6AE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ȳ<EFBFBD><C8B2>ɸı䣩`
**3.2 <20><>̬<EFBFBD><CCAC><EFBFBD><EFBFBD>**
<EFBFBD>ڳ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ռ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֮<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȿɸ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
![<EFBFBD><EFBFBD>̬<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͼ](https://img-blog.csdnimg.cn/2019121820102094.png)
<EFBFBD><EFBFBD><EFBFBD>´<EFBFBD><EFBFBD><EFBFBD>Ϊ`C#`<EFBFBD><EFBFBD><EFBFBD>
```c
using System;
namespace LinearStruct
{
/// <summary>
/// <20><>̬<EFBFBD><CCAC><EFBFBD><EFBFBD><EFBFBD>ij<EFBFBD><C4B3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʵ<EFBFBD><CAB5>
/// </summary>
/// <typeparam name="T"><3E><>̬<EFBFBD><CCAC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ԫ<EFBFBD>ص<EFBFBD><D8B5><EFBFBD><EFBFBD><EFBFBD></typeparam>
public class DArray<T> where T : IComparable<T>
{
private T[] _array;
/// <summary>
/// <20><>ȡ<EFBFBD><C8A1>̬<EFBFBD><CCAC><EFBFBD><EFBFBD><EFBFBD>ĵ<EFBFBD>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD>
/// </summary>
public int Size { get; private set; }
/// <summary>
/// <20><>ʼ<EFBFBD><CABC>DArray<61><79><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʵ<EFBFBD><CAB5>
/// </summary>
/// <param name="size"><3E><>̬<EFBFBD><CCAC><EFBFBD><EFBFBD><EFBFBD>ij<EFBFBD>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD></param>
public DArray(int size)
{
if (size <= 0)
throw new ArgumentOutOfRangeException();
Size = size;
_array = new T[Size];
}
/// <summary>
/// <20>ı䶯̬<E4B6AF><CCAC><EFBFBD><EFBFBD><EFBFBD>ij<EFBFBD><C4B3><EFBFBD>
/// </summary>
/// <param name="newSize"><3E><>̬<EFBFBD><CCAC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>³<EFBFBD><C2B3><EFBFBD></param>
public void ReSize(int newSize)
{
if (newSize <= 0)
throw new ArgumentOutOfRangeException();
if (Size != newSize)
{
T[] newArray = new T[newSize];
int n = newSize < Size ? newSize : Size;
for (int i = 0; i < n; i++)
{
newArray[i] = _array[i];
}
_array = newArray;
Size = newSize;
}
}
/// <summary>
/// <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ԫ<EFBFBD><D4AA>
/// </summary>
/// <param name="index">Ҫ<><D2AA><EFBFBD>û<EFBFBD><C3BB><EFBFBD><EFBFBD>õ<EFBFBD>Ԫ<EFBFBD>ش<EFBFBD><D8B4>ʼ<E3BFAA><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD></param>
/// <returns>ָ<><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ԫ<EFBFBD><D4AA></returns>
public T this[int index]
{
get
{
if (index < 0 || index > Size - 1)
throw new IndexOutOfRangeException();
return _array[index];
}
set
{
if (index < 0 || index > Size - 1)
throw new IndexOutOfRangeException();
_array[index] = value;
}
}
}
}
```
## 4. <20><>ϰ<EFBFBD>ο<EFBFBD><CEBF><EFBFBD><EFBFBD><EFBFBD>
**1. <20><><EFBFBD>ö<EFBFBD>̬<EFBFBD><CCAC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݴ<EFBFBD><DDB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>**
<EFBFBD><EFBFBD><EFBFBD>´<EFBFBD><EFBFBD><EFBFBD>Ϊ`C#`<EFBFBD><EFBFBD><EFBFBD>
```c
using System;
using LinearStruct;
namespace SampleDArray
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("N=");
string s = Console.ReadLine();
int n;
if (int.TryParse(s, out n))
{
DArray<int> arr = new DArray<int>(10);
int j = 0;
for (int i = 2; i <= n; i++)
{
if (i%5 == 0 || i%7 == 0)
{
if (j == arr.Size)
arr.ReSize(arr.Size + 10);
arr[j] = i;
j++;
}
}
for (int i = 0; i < j; i++)
{
Console.Write(arr[i] + " ");
}
}
}
}
}
```
**2. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ľ<EFBFBD><C4BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>**
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ`python`<EFBFBD>
```python
class Solution(object):
"""
<20><><EFBFBD>жԽ<D0B6><D4BD><EFBFBD><EFBFBD>ϵ<EFBFBD>Ԫ<EFBFBD>ض<EFBFBD><D8B6><EFBFBD><EFBFBD><EFBFBD> a_1 = a_2, a_2 = a_3, a_{k-1} = a_ka
<20><><EFBFBD>ڶԽ<DAB6><D4BD><EFBFBD><EFBFBD>ϵ<EFBFBD>Ԫ<EFBFBD><D4AA><EFBFBD><EFBFBD>˵<EFBFBD><CBB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǰԪ<C7B0>ز<EFBFBD><D8B2>ǵ<EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD>Ԫ<EFBFBD>أ<EFBFBD>
<20><>ô<EFBFBD><C3B4>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD>Ԫ<EFBFBD><D4AA>һ<EFBFBD><D2BB><EFBFBD>ڵ<EFBFBD>ǰԪ<C7B0>ص<EFBFBD><D8B5><EFBFBD><EFBFBD>Ͻǡ<CFBD>
<20><><EFBFBD><EFBFBD><EFBFBD>Ƴ<EFBFBD><C6B3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (r, c) <20>ϵ<EFBFBD>Ԫ<EFBFBD>أ<EFBFBD>ֻ<EFBFBD><D6BB>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD> r == 0 OR c == 0 OR matrix[r-1][c-1] == matrix[r][c] <20>Ϳ<EFBFBD><CDBF><EFBFBD><EFBFBD>ˡ<EFBFBD>
"""
def isToeplitzMatrix(self, matrix):
# all()<29><>ʾ<EFBFBD><CABE><EFBFBD>ж<EFBFBD>Ϊtrue<75>ŷ<EFBFBD><C5B7><EFBFBD>true
# python<6F><6E><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>б<EFBFBD><D0B1>Ƶ<EFBFBD>ʽ<EFBFBD><CABD><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9>˫<EFBFBD><CBAB>forѭ<72><D1AD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E9B3AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
return all(r == 0 or c == 0 or matrix[r - 1][c - 1] == val
for r, row in enumerate(matrix)
for c, val in enumerate(row))
if __name__ == '__main__':
matrix = [
[1, 2, 3, 4],
[5, 1, 2, 3],
[9, 5, 1, 2]
]
solution = Solution()
output = solution.isToeplitzMatrix(matrix)
print(output)
```
**3. <20><><EFBFBD><EFBFBD>֮<EFBFBD><D6AE>**
<EFBFBD><EFBFBD><EFBFBD>´<EFBFBD><EFBFBD><EFBFBD>Ϊ`C#`<EFBFBD><EFBFBD><EFBFBD>
```c
public class Solution {
public IList<IList<int>> ThreeSum(int[] nums) {
IList<IList<int>> result = new List<IList<int>>();
if (nums == null || nums.Length < 3)
return result;
nums = nums.OrderBy(a => a).ToArray();
int len = nums.Length;
for (int i = 0; i < len; i++)
{
if (nums[i] > 0) // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǰ<EFBFBD><C7B0><EFBFBD>ִ<EFBFBD><D6B4><EFBFBD>0<EFBFBD><30><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֮<EFBFBD><D6AE>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>0<EFBFBD><30><EFBFBD><EFBFBD><EFBFBD>Խ<EFBFBD><D4BD><EFBFBD>ѭ<EFBFBD><D1AD>
break;
if (i > 0 && nums[i] == nums[i - 1])
continue; // ȥ<><C8A5>
int l = i + 1;
int r = len - 1;
while (l < r)
{
int sum = nums[i] + nums[l] + nums[r];
if (sum == 0)
{
result.Add(new List<int>() {nums[i], nums[l], nums[r]});
while (l < r && nums[l] == nums[l + 1]) l++; // ȥ<><C8A5>
while (l < r && nums[r - 1] == nums[r]) r--; //ȥ<><C8A5>
l++;
r--;
}
else if (sum < 0)
{
l++;
}
else if (sum > 0)
{
r--;
}
}
}
return result;
}
}
```

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,628 @@
# Task03<30><33>ջ<EFBFBD><D5BB><EFBFBD>ݹ飨2<E9A3A8>
ջ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ǿ<EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD>õ<EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݽṹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͼ<EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӵ<EFBFBD><EFBFBD><EFBFBD>˳<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӵ<EFBFBD>ѹ<EFBFBD><EFBFBD>е<EFBFBD>˳<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѹ<EFBFBD><EFBFBD>е<EFBFBD><EFBFBD>ӵ<EFBFBD><EFBFBD>ȷ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
![](https://img-blog.csdnimg.cn/20191222213300699.png)
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD>õ<EFBFBD>Word<EFBFBD><EFBFBD>Excel<EFBFBD><EFBFBD>Photoshop<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵͳ<EFBFBD>еij<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҳ<EFBFBD><EFBFBD>ջ<EFBFBD>ľ<EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD>ã<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>IJ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȳ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ġ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ǿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϸ<EFBFBD><EFBFBD><EFBFBD>ܡ<EFBFBD>ջ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݽṹ<EFBFBD><EFBFBD>
## 1. ջ<>Ķ<EFBFBD><C4B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
**1.1 ջ<>Ķ<EFBFBD><C4B6><EFBFBD>**
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ջ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɾ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ջ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֻ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD>ˣ<EFBFBD>ջ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>е<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ա<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƚ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>First In Last Out<75><74><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ա<EFBFBD><D4B1><EFBFBD>
<EFBFBD><EFBFBD>1 <20><><EFBFBD><EFBFBD><EFBFBD>Ա<EFBFBD>`(a0,a1,...,an)` <20><>ջ<EFBFBD><D5BB><EFBFBD><EFBFBD>ջ<EFBFBD><D5BB>ʾ<EFBFBD><CABE>
![˳<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ջ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ջ](https://img-blog.csdnimg.cn/20191222213645860.png)
![<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ջ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ջ](https://img-blog.csdnimg.cn/20191222213749217.png)
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD>ջ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʵ<EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>˳<EFBFBD><EFBFBD>ջһ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ջ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʵ<EFBFBD>ַ<EFBFBD>ʽ<EFBFBD><EFBFBD>ʲô<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>أ<EFBFBD><EFBFBD><EFBFBD>ʵ<EFBFBD><EFBFBD>˳<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD>ģ<EFBFBD>
- ˳<><CBB3>ջ<EFBFBD>Ǿ<EFBFBD>̬<EFBFBD><CCAC><EFBFBD><EFBFBD><EFBFBD>ĵ<EFBFBD><C4B5><EFBFBD><EFBFBD><EFBFBD>ջ<EFBFBD>Ƕ<EFBFBD>̬<EFBFBD><CCAC><EFBFBD><EFBFBD><EFBFBD>ģ<EFBFBD><C4A3><EFBFBD><EFBFBD>ԱȽ<D4B1><C8BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ջ<EFBFBD><D5BB><EFBFBD>ڿռ<DABF><D5BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʸ<EFBFBD><CAB8>ߡ<EFBFBD><DFA1><EFBFBD>Ϊ˳<CEAA><CBB3>ջ<EFBFBD><D5BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˽ϴ<CBBD><CFB4>Ŀռ<D5BC>Dz<EFBFBD>û<EFBFBD><C3BB>ȫ<EFBFBD><C8AB><EFBFBD><EFBFBD><EFBFBD>洢Ԫ<E6B4A2>ء<EFBFBD>
- ˳<><CBB3>ջ<EFBFBD><D5BB>Ȼ<EFBFBD><C8BB><EFBFBD>ô洢ָ<E6B4A2><D6B8><EFBFBD><EFBFBD><EFBFBD>Ƚ<EFBFBD><C8BD><EFBFBD>ջ<EFBFBD><D5BB>˵<EFBFBD><CBB5>Ϊ<EFBFBD><CEAA>ʡ<EFBFBD>ڴ<EFBFBD><DAB4>ռ<D5BC><E4A3AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ջȴ<D5BB><C8B4><EFBFBD>Խ<EFBFBD><D4BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD><DAB4>ռ<EFBFBD><D5BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
- <20><><EFBFBD>Ҷ<EFBFBD><D2B6>ڴ洢<DAB4><E6B4A2>δ֪<CEB4><D6AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>£<EFBFBD><C2A3><EFBFBD>ջ<EFBFBD><D5BB><EFBFBD><EFBFBD><EFBFBD>ʺϣ<CABA><CFA3><EFBFBD>Ϊ<EFBFBD><CEAA>ջͨ<D5BB><CDA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ջ<EFBFBD><D5BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
- <20><><EFBFBD><EFBFBD>˳<EFBFBD><CBB3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˵<EFBFBD><CBB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڲ<EFBFBD><DAB2><EFBFBD><EFBFBD><EFBFBD>ɾ<EFBFBD><C9BE>Ч<EFBFBD>ʸ<EFBFBD><CAB8>ߣ<EFBFBD>˳<EFBFBD><CBB3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڲ<EFBFBD><DAB2><EFBFBD>Ч<EFBFBD>ʸ<EFBFBD><CAB8>ߡ<EFBFBD><DFA1><EFBFBD><EFBFBD>Ƕ<EFBFBD><C7B6><EFBFBD>ջ<EFBFBD><D5BB>˵ֻ<CBB5><D6BB><EFBFBD><EFBFBD>ջ<EFBFBD><D5BB><EFBFBD><EFBFBD><EFBFBD>в<EFBFBD><D0B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>޷<EFBFBD><DEB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ч<EFBFBD>ʸ<EFBFBD><CAB8>ߡ<EFBFBD>
**1.2 ջ<>IJ<EFBFBD><C4B2><EFBFBD>**
- <20><>ջ<EFBFBD><D5BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ԫ<EFBFBD><D4AA>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD>ջ<EFBFBD><D5BB><EFBFBD><EFBFBD>
- <20><>ջ<EFBFBD><D5BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƴ<EFBFBD>ջ<EFBFBD><D5BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ԫ<EFBFBD>ء<EFBFBD>
- <20>Ƿ<EFBFBD>Ϊ<EFBFBD>գ<EFBFBD><D5A3>ж<EFBFBD>ջ<EFBFBD><D5BB><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ԫ<EFBFBD>ء<EFBFBD>
- <20>õ<EFBFBD>ջ<EFBFBD><EFBFBD><EEA3BA>ȡջ<C8A1><D5BB>ʵ<EFBFBD>ʰ<EFBFBD><CAB0><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ԫ<EFBFBD>صĸ<D8B5><C4B8><EFBFBD><EFBFBD><EFBFBD>
- <20><><EFBFBD>ղ<EFBFBD><D5B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƴ<EFBFBD>ջ<EFBFBD>е<EFBFBD><D0B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ԫ<EFBFBD>ء<EFBFBD>
- <20><>ȡջ<C8A1><D5BB>Ԫ<EFBFBD>ء<EFBFBD>
![ջ<EFBFBD>ӿ<EFBFBD>](https://img-blog.csdnimg.cn/20191222214544845.png)
<EFBFBD><EFBFBD><EFBFBD>´<EFBFBD><EFBFBD><EFBFBD>Ϊ`C#`<EFBFBD><EFBFBD><EFBFBD>
```c
using System;
namespace LinearStruct
{
/// <summary>
/// ջ<>ij<EFBFBD><C4B3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
/// </summary>
/// <typeparam name="T">ջ<><D5BB>Ԫ<EFBFBD>ص<EFBFBD><D8B5><EFBFBD><EFBFBD><EFBFBD></typeparam>
public interface IStack<T> where T : IComparable<T>
{
/// <summary>
/// <20><>ȡջ<C8A1><D5BB>ʵ<EFBFBD>ʰ<EFBFBD><CAB0><EFBFBD>Ԫ<EFBFBD>صĸ<D8B5><C4B8><EFBFBD>
/// </summary>
int Length { get; }
/// <summary>
/// <20><>ȡջ<C8A1><D5BB>Ԫ<EFBFBD><D4AA>
/// </summary>
T StackTop { get; }
/// <summary>
/// <20><><EFBFBD><EFBFBD>Ԫ<EFBFBD><D4AA><EFBFBD><EFBFBD>ջ
/// </summary>
/// <param name="data">Ҫ<><D2AA>ջ<EFBFBD><D5BB>Ԫ<EFBFBD><D4AA></param>
void Push(T data);
/// <summary>
/// <20><><EFBFBD><EFBFBD>Ԫ<EFBFBD>س<EFBFBD>ջ
/// </summary>
void Pop();
/// <summary>
/// <20>ж<EFBFBD>ջ<EFBFBD><D5BB><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD>Ԫ<EFBFBD><D4AA>
/// </summary>
/// <returns><3E><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ԫ<EFBFBD>ط<EFBFBD><D8B7><EFBFBD>false,<2C><><EFBFBD>򷵻<EFBFBD>true.</returns>
bool IsEmpty();
/// <summary>
/// <20><>ջ<EFBFBD><D5BB><EFBFBD>Ƴ<EFBFBD><C6B3><EFBFBD><EFBFBD><EFBFBD>Ԫ<EFBFBD><D4AA>
/// </summary>
void Clear();
}
}
```
## 2. ջ<>Ĵ洢<C4B4><E6B4A2>ʵ<EFBFBD><CAB5>
**2.1 ˳<><CBB3><EFBFBD><EFBFBD><E6B4A2>˳<EFBFBD><CBB3>ջ<EFBFBD><D5BB>**
˳<EFBFBD><EFBFBD>ջ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˳<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʵ<EFBFBD>ֵ<EFBFBD>ջ<EFBFBD><EFBFBD>
ʵ<EFBFBD>֣<EFBFBD>
![˳<EFBFBD><EFBFBD>ջ](https://img-blog.csdnimg.cn/20191222214937292.png)
<EFBFBD><EFBFBD><EFBFBD>´<EFBFBD><EFBFBD><EFBFBD>Ϊ`C#`<EFBFBD><EFBFBD><EFBFBD>
```c
using System;
namespace LinearStruct
{
/// <summary>
/// <20><>˳<EFBFBD><CBB3><EFBFBD><EFBFBD>ṹʵ<E1B9B9>ֵ<EFBFBD>ջ
/// </summary>
/// <typeparam name="T">˳<><CBB3>ջ<EFBFBD><D5BB>Ԫ<EFBFBD>ص<EFBFBD><D8B5><EFBFBD><EFBFBD><EFBFBD></typeparam>
public class SeqStack<T> : IStack<T> where T : IComparable<T>
{
private readonly SeqList<T> _lst;
/// <summary>
/// <20><>ʼ<EFBFBD><CABC>SeqStack<63><6B><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʵ<EFBFBD><CAB5>
/// </summary>
/// <param name="max">SeqStack<63><6B><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ԫ<EFBFBD>صĸ<D8B5><C4B8><EFBFBD></param>
public SeqStack(int max)
{
if (max <= 0)
throw new ArgumentOutOfRangeException();
_lst = new SeqList<T>(max);
}
/// <summary>
/// <20><>ȡSeqStack<63><6B>ʵ<EFBFBD>ʰ<EFBFBD><CAB0><EFBFBD>Ԫ<EFBFBD>صĸ<D8B5><C4B8><EFBFBD>
/// </summary>
public int Length
{
get { return _lst.Length; }
}
/// <summary>
/// <20><>ȡSeqStack<63><6B><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ԫ<EFBFBD>صĸ<D8B5><C4B8><EFBFBD>
/// </summary>
public int MaxSize
{
get { return _lst.MaxSize; }
}
/// <summary>
/// <20><>ȡSeqStack<63>е<EFBFBD>ջ<EFBFBD><D5BB>Ԫ<EFBFBD><D4AA>
/// </summary>
public T StackTop
{
get
{
if (_lst.IsEmpty())
throw new Exception("ջΪ<EFBFBD><EFBFBD>.");
return _lst[0];
}
}
/// <summary>
/// <20><><EFBFBD><EFBFBD>Ԫ<EFBFBD><D4AA><EFBFBD><EFBFBD>ջ
/// </summary>
/// <param name="data">Ҫ<><D2AA>ջ<EFBFBD><D5BB>Ԫ<EFBFBD><D4AA></param>
public void Push(T data)
{
if (_lst.Length == _lst.MaxSize)
throw new Exception("ջ<EFBFBD>Ѵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.");
_lst.Insert(0, data);
}
/// <summary>
/// <20><><EFBFBD><EFBFBD>Ԫ<EFBFBD>س<EFBFBD>ջ
/// </summary>
public void Pop()
{
if (_lst.IsEmpty())
throw new Exception("ջΪ<EFBFBD><EFBFBD>.");
_lst.Remove(0);
}
/// <summary>
/// <20>ж<EFBFBD>SeqStack<63><6B><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD>Ԫ<EFBFBD><D4AA>
/// </summary>
/// <returns><3E><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ԫ<EFBFBD>ط<EFBFBD><D8B7><EFBFBD>false,<2C><><EFBFBD>򷵻<EFBFBD>true.</returns>
public bool IsEmpty()
{
return _lst.IsEmpty();
}
/// <summary>
/// <20><>SeqStack<63><6B><EFBFBD>Ƴ<EFBFBD><C6B3><EFBFBD><EFBFBD><EFBFBD>Ԫ<EFBFBD><D4AA>
/// </summary>
public void Clear()
{
_lst.Clear();
}
}
}
```
**2.2 <20><>ʽ<EFBFBD><EFBFBD><E6B4A2><EFBFBD><EFBFBD>ջ<EFBFBD><D5BB>**
<EFBFBD><EFBFBD>ջ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>õ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʵ<EFBFBD>ֵ<EFBFBD>ջ<EFBFBD><EFBFBD>
ʵ<EFBFBD>֣<EFBFBD>
![<EFBFBD><EFBFBD>ջ](https://img-blog.csdnimg.cn/20191222215336715.png)
<EFBFBD><EFBFBD><EFBFBD>´<EFBFBD><EFBFBD><EFBFBD>Ϊ`C#`<EFBFBD><EFBFBD><EFBFBD>
```c
using System;
namespace LinearStruct
{
/// <summary>
/// <20><><EFBFBD><EFBFBD>ʽ<EFBFBD><EFBFBD>ṹʵ<E1B9B9>ֵ<EFBFBD>ջ
/// </summary>
/// <typeparam name="T">ջ<><D5BB>Ԫ<EFBFBD>ص<EFBFBD><D8B5><EFBFBD><EFBFBD><EFBFBD></typeparam>
public class LinkStack<T> : IStack<T> where T : IComparable<T>
{
private readonly SLinkList<T> _lst;
/// <summary>
/// <20><>ʼ<EFBFBD><CABC>LinkStack<63><6B><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʵ<EFBFBD><CAB5>
/// </summary>
public LinkStack()
{
_lst = new SLinkList<T>();
}
/// <summary>
/// <20><>ȡLinkStack<63><6B>ʵ<EFBFBD>ʰ<EFBFBD><CAB0><EFBFBD>Ԫ<EFBFBD>صĸ<D8B5><C4B8><EFBFBD>
/// </summary>
public int Length
{
get { return _lst.Length; }
}
/// <summary>
/// <20><>ȡLinkStack<63>е<EFBFBD>ջ<EFBFBD><D5BB>Ԫ<EFBFBD><D4AA>
/// </summary>
public T StackTop
{
get
{
if (_lst.Length == 0)
throw new Exception("ջΪ<EFBFBD><EFBFBD>.");
return _lst[0];
}
}
/// <summary>
/// <20><><EFBFBD><EFBFBD>Ԫ<EFBFBD><D4AA><EFBFBD><EFBFBD>ջ
/// </summary>
/// <param name="data">Ҫ<><D2AA>ջ<EFBFBD><D5BB>Ԫ<EFBFBD><D4AA></param>
public void Push(T data)
{
_lst.InsertAtFirst(data);
}
/// <summary>
/// <20><><EFBFBD><EFBFBD>Ԫ<EFBFBD>س<EFBFBD>ջ
/// </summary>
public void Pop()
{
if (_lst.Length == 0)
throw new Exception("ջΪ<EFBFBD><EFBFBD>.");
_lst.Remove(0);
}
/// <summary>
/// <20>ж<EFBFBD>LinkStack<63><6B><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD>Ԫ<EFBFBD><D4AA>
/// </summary>
/// <returns><3E><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ԫ<EFBFBD>ط<EFBFBD><D8B7><EFBFBD>false,<2C><><EFBFBD>򷵻<EFBFBD>true.</returns>
public bool IsEmpty()
{
return _lst.IsEmpty();
}
/// <summary>
/// <20><>LinkStack<63><6B><EFBFBD>Ƴ<EFBFBD><C6B3><EFBFBD><EFBFBD><EFBFBD>Ԫ<EFBFBD><D4AA>
/// </summary>
public void Clear()
{
_lst.Clear();
}
}
}
```
## 3. <20>ݹ<EFBFBD>
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڲ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǵݹ麯<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
Sample01<EFBFBD><EFBFBD><EFBFBD><EFBFBD>n<EFBFBD>Ľ׳<EFBFBD>
`n! = 1 x 2 x 3 x ... x n`
ѭ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
<EFBFBD><EFBFBD><EFBFBD>´<EFBFBD><EFBFBD><EFBFBD>Ϊ`Python`<EFBFBD><EFBFBD><EFBFBD>
```python
n = 5
for k in range(1, 5):
n = n * k
print(n) # 120
```
<EFBFBD>ݹ飺
<EFBFBD><EFBFBD><EFBFBD>´<EFBFBD><EFBFBD><EFBFBD>Ϊ`Python`<EFBFBD><EFBFBD><EFBFBD>
```python
def factorial(n):
if n == 1:
return 1
return n * fact(n - 1)
print(factorial(5)) # 120
```
Samp02<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
`f(n)=f(n-1)+f(n-2), f(0)=0 f(1)=1`
ѭ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
<EFBFBD><EFBFBD><EFBFBD>´<EFBFBD><EFBFBD><EFBFBD>Ϊ`Python`<EFBFBD><EFBFBD><EFBFBD>
```python
i = 0
j = 1
lst = list([i, j])
for k in range(2, 11):
k = i + j
lst.append(k)
i = j
j = k
print(lst)
# [0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55]
```
<EFBFBD>ݹ飺
<EFBFBD><EFBFBD><EFBFBD>´<EFBFBD><EFBFBD><EFBFBD>Ϊ`Python`<EFBFBD><EFBFBD><EFBFBD>
```python
def recur_fibo(n):
if n <= 1:
return n
return recur_fibo(n - 1) + recur_fibo(n - 2)
lst = list()
for k in range(11):
lst.append(recur_fibo(k))
print(lst)
# [0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55]
```
ע<EFBFBD><EFBFBD><EFBFBD><EFBFBD>õݹ<EFBFBD><EFBFBD>IJ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>PythonĬ<EFBFBD>ϵݹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ 100
```python
import sys
sys.setrecursionlimit(1000)
```
Sample03<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ŵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
<EFBFBD><EFBFBD>ŵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դ<EFBFBD><EFBFBD>ӡ<EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϴ<EFBFBD>˵<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ߡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʯ<EFBFBD><EFBFBD><EFBFBD>ӣ<EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϴ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϰ<EFBFBD><EFBFBD>մ<EFBFBD>С˳<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 64 Ƭ<>ƽ<EFBFBD>Բ<EFBFBD>̡<EFBFBD><CCA1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ű<EFBFBD>Բ<EFBFBD>̴<EFBFBD><CCB4><EFBFBD><EFBFBD>ʼ<E6BFAA><CABC><EFBFBD><EFBFBD>С˳<D0A1><CBB3><EFBFBD><EFBFBD><EFBFBD>°ڷ<C2B0><DAB7><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϡ<EFBFBD><CFA1><EFBFBD><EFBFBD>ҹ涨<D2B9><E6B6A8><EFBFBD><EFBFBD>СԲ<D0A1><D4B2><EFBFBD>ϲ<EFBFBD><CFB2>ܷŴ<DCB7>Բ<EFBFBD>̣<EFBFBD><CCA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֮<EFBFBD><D6AE>һ<EFBFBD><D2BB>ֻ<EFBFBD><D6BB><EFBFBD>ƶ<EFBFBD>һ<EFBFBD><D2BB>Բ<EFBFBD>̡<EFBFBD>
![](https://img-blog.csdnimg.cn/20181218104026718.png)
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ˼<EFBFBD><EFBFBD>ÿһ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ô<EFBFBD>ƿ<EFBFBD><EFBFBD>ܻ<EFBFBD><EFBFBD>dz<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǿ<EFBFBD><EFBFBD>Խ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>򻯡<EFBFBD>
<EFBFBD><EFBFBD><EFBFBD>ǿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> a <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֮<EFBFBD><EFBFBD>Ѿ<EFBFBD><D1BE>ɹ<EFBFBD><C9B9>ؽ<EFBFBD> a <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 63<36><33><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƶ<EFBFBD><C6B5><EFBFBD> b <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>ֻҪ<D6BB>ٽ<EFBFBD><D9BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> a <20><><EFBFBD>ƶ<EFBFBD><C6B6><EFBFBD> c <20><><EFBFBD><EFBFBD><EFBFBD>ɡ<EFBFBD>
![](https://img-blog.csdnimg.cn/20181218104208856.png)
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> a <20><><EFBFBD>Ƶ<EFBFBD> c <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>b <20><><EFBFBD>ϱ<EFBFBD><CFB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>µ<EFBFBD> 63 <20><><EFBFBD><EFBFBD><EFBFBD>ӣ<EFBFBD>a <20><>Ϊ<EFBFBD>ա<EFBFBD><D5A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڵ<EFBFBD>Ŀ<EFBFBD><C4BF><EFBFBD>ͱ<EFBFBD><CDB1><EFBFBD><EFBFBD>˽<EFBFBD><CBBD><EFBFBD> 63 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> b <20><><EFBFBD>Ƶ<EFBFBD> c <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ԭ<EFBFBD><D4AD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȫһ<C8AB><D2BB><EFBFBD><EFBFBD>ֻ<EFBFBD><D6BB><EFBFBD><EFBFBD> a <20><><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA> b <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģ<EFBFBD><C4A3> 64 <20><>Ϊ<EFBFBD><CEAA> 63<36><33><EFBFBD><EFBFBD><EFBFBD>˿<EFBFBD><CBBF>Բ<EFBFBD><D4B2><EFBFBD><EFBFBD><EFBFBD>ͬ<EFBFBD>ķ<EFBFBD><C4B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƚ<EFBFBD><C8BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 62 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> b <20><><EFBFBD>Ƶ<EFBFBD> a <20><><EFBFBD><EFBFBD><EFBFBD>ٽ<EFBFBD><D9BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƶ<EFBFBD> c <20><><EFBFBD><EFBFBD>
<EFBFBD>Դ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> b <20><>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><E5A3AC> a <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 62 <20><>Բ<EFBFBD><D4B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 61 <20><>Բ<EFBFBD><D4B2><EFBFBD>ƶ<EFBFBD><C6B6><EFBFBD> b <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB>Բ<EFBFBD><D4B2><EFBFBD>Ƶ<EFBFBD> c <20><><EFBFBD><EFBFBD>
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ѿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֹ<EFBFBD><EFBFBD>ɣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ÿ<EFBFBD>ζ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> a <20><> b <20><>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD>壬Ȼ<E5A3AC><C8BB><EFBFBD>Ƚ<EFBFBD><C8BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Բ<EFBFBD><D4B2>֮<EFBFBD><D6AE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Բ<EFBFBD><D4B2><EFBFBD>ƶ<EFBFBD><C6B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϣ<EFBFBD><CFA3>ٽ<EFBFBD><D9BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>µ<EFBFBD>Բ<EFBFBD><D4B2><EFBFBD>Ƶ<EFBFBD> c <20><><EFBFBD><EFBFBD><EFBFBD>ϣ<EFBFBD><CFA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ظ<EFBFBD><D8B8>˹<EFBFBD><CBB9>̡<EFBFBD>
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƶ<EFBFBD>Բ<EFBFBD>̵Ĺ<EFBFBD><EFBFBD>̾<EFBFBD><EFBFBD>ǵݹ飬<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ÿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> n <20><>Բ<EFBFBD>̵<EFBFBD><CCB5>ƶ<EFBFBD><C6B6><EFBFBD><EFBFBD><EFBFBD><E2A3AC>Ҫ<EFBFBD>Ƚ<EFBFBD><C8BD><EFBFBD><EFBFBD><EFBFBD>n-1<><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӽ<EFBFBD><D3BD><EFBFBD>ͬ<EFBFBD><CDAC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
<EFBFBD><EFBFBD><EFBFBD>ǿ<EFBFBD><EFBFBD>Ա<EFBFBD>дһ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>move(n, a, b, c)<29><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>⣺move(<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD>, <20>յ<EFBFBD>)<29><>
<u>1. a <20><>ֻ<EFBFBD><D6BB>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD>ӵ<EFBFBD><D3B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֱ<EFBFBD>Ӱᵽ c<><63><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD></u>:
```python
if n == 1:
print(a, '-->', c)
```
<u>2. a <20>ϲ<EFBFBD>ֹ<EFBFBD><D6B9>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD>ӵ<EFBFBD><D3B5><EFBFBD><EFBFBD><EFBFBD></u>:
<EFBFBD><EFBFBD><EFBFBD>ȣ<EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><EFBFBD> n-1 <20><><EFBFBD><EFBFBD><EFBFBD>Ӱᵽ b <20><><EFBFBD>ӻ<EFBFBD><D3BB><EFBFBD><E5A1A3>ӡ<EFBFBD><D3A1><EFBFBD><EFBFBD>Ч<EFBFBD><D0A7><EFBFBD>ǣ<EFBFBD>a --> b<><62>
```python
move(n - 1, a, c, b)
```
<EFBFBD>ٰ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӱᵽ c <20><><EFBFBD>ӣ<EFBFBD>Ҳ<EFBFBD><D2B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ߴ<EFBFBD><DFB4><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӡ<EFBFBD><D3A1><EFBFBD><EFBFBD>a-->c<><63>
```python
move(1, a, b, c)
```
<EFBFBD><EFBFBD><EFBFBD>󣬰<EFBFBD>ʣ<EFBFBD><EFBFBD> b <20><><EFBFBD><EFBFBD> n-1 <20><><EFBFBD><EFBFBD><EFBFBD>Ӱᵽ c <20>ϣ<EFBFBD><CFA3><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E3A3AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˻<EFBFBD><CBBB>
```python
move(n - 1, b, a, c)
```
<EFBFBD><EFBFBD><EFBFBD><EFBFBD> Python ʵ<>ֺ<EFBFBD>ŵ<EFBFBD><C5B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
```python
i = 0
def move(n, a, b, c):
global i
if (n == 1):
i += 1
print('<EFBFBD>ƶ<EFBFBD><EFBFBD><EFBFBD> {0} <20><> {1} --> {2}'.format(i, a, c))
return
move(n - 1, a, c, b)
move(1, a, b, c)
move(n - 1, b, a, c)
move(3, "a", "b", "c")
# <20>ƶ<EFBFBD><C6B6><EFBFBD> 1 <20><> a --> c
# <20>ƶ<EFBFBD><C6B6><EFBFBD> 2 <20><> a --> b
# <20>ƶ<EFBFBD><C6B6><EFBFBD> 3 <20><> c --> b
# <20>ƶ<EFBFBD><C6B6><EFBFBD> 4 <20><> a --> c
# <20>ƶ<EFBFBD><C6B6><EFBFBD> 5 <20><> b --> a
# <20>ƶ<EFBFBD><C6B6><EFBFBD> 6 <20><> b --> c
# <20>ƶ<EFBFBD><C6B6><EFBFBD> 7 <20><> a --> c
```
<EFBFBD><EFBFBD><EFBFBD><EFBFBD> C# ʵ<>ֺ<EFBFBD>ŵ<EFBFBD><C5B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
```c
class Program
{
private static int i = 0;
static void Move(int n, string a, string b, string c)
{
if (n == 1)
{
Console.WriteLine("<EFBFBD>ƶ<EFBFBD><EFBFBD><EFBFBD> {0} <20><> {1}-->{2}", ++i, a, c);
return;
}
Move(n - 1, a, c, b);
Move(1, a, b, c);
Move(n - 1, b, a, c);
}
static void Main(string[] args)
{
Move(3, "a", "b", "c");
}
}
// <20>ƶ<EFBFBD><C6B6><EFBFBD> 1 <20><> a --> c
// <20>ƶ<EFBFBD><C6B6><EFBFBD> 2 <20><> a --> b
// <20>ƶ<EFBFBD><C6B6><EFBFBD> 3 <20><> c --> b
// <20>ƶ<EFBFBD><C6B6><EFBFBD> 4 <20><> a --> c
// <20>ƶ<EFBFBD><C6B6><EFBFBD> 5 <20><> b --> a
// <20>ƶ<EFBFBD><C6B6><EFBFBD> 6 <20><> b --> c
// <20>ƶ<EFBFBD><C6B6><EFBFBD> 7 <20><> a --> c
```
## 4. <20><>ϰ<EFBFBD>ο<EFBFBD><CEBF><EFBFBD><EFBFBD><EFBFBD>
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ŵij<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>£<EFBFBD>`C#`<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
```c
using System;
using LinearStruct;
namespace TrainArrange
{
class Program
{
/// <summary>
/// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
/// </summary>
/// <param name="p"><3E><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD></param>
/// <param name="k"><3E><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD></param>
/// <returns><3E><><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7>ɹ<EFBFBD></returns>
static bool RailRoad(int[] p, int k)
{
LinkStack<int>[] h = new LinkStack<int>[k];
for (int i = 0; i < h.Length; i++)
h[i] = new LinkStack<int>();
int nowOut = 1; //<2F><>һ<EFBFBD><D2BB>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD><EFBFBD>ij<EFBFBD><C4B3><EFBFBD><EFBFBD><EFBFBD>
int minH = int.MaxValue; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>б<EFBFBD><D0B1><EFBFBD><EFBFBD><EFBFBD>С<EFBFBD>ij<EFBFBD><C4B3><EFBFBD>
int minS = -1; //minH<6E>ų<EFBFBD><C5B3><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD>Ļ<EFBFBD><C4BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
for (int i = 0; i < p.Length; i++)
{
if (p[i] == nowOut)
{
Console.WriteLine("<EFBFBD>ƶ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>᣺{0}<7D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><ECB5BD><EFBFBD>", p[i]);
nowOut++;
//<2F>ӻ<EFBFBD><D3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
while (minH == nowOut)
{
Output(ref minH, ref minS, h); //<2F><><EFBFBD><EFBFBD>
nowOut++;
}
}
else
{
//<2F><>p[i]<5D><><EFBFBD><EFBFBD>ij<EFBFBD><C4B3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if (Input(p[i], ref minH, ref minS, h) == false)
{
return false;
}
}
}
return true;
}
/// <summary>
/// <20>ӻ<EFBFBD><D3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƴ<EFBFBD><C6B3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
/// </summary>
/// <param name="minH"><3E><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>б<EFBFBD><D0B1><EFBFBD><EFBFBD><EFBFBD>С<EFBFBD>ij<EFBFBD><C4B3><EFBFBD></param>
/// <param name="minS">minH<6E>ų<EFBFBD><C5B3><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD>Ļ<EFBFBD><C4BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD></param>
/// <param name="h"><3E><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD></param>
static void Output(ref int minH, ref int minS, LinkStack<int>[] h)
{
h[minS].Pop(); //<2F>Ӷ<EFBFBD>ջminS<6E><53>ɾ<EFBFBD><C9BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>С<EFBFBD>ij<EFBFBD><C4B3><EFBFBD>minH
Console.WriteLine("<EFBFBD>ƶ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>᣺{0}<7D>ӻ<EFBFBD><D3BB><EFBFBD><EFBFBD><EFBFBD>{1}<7D><><EFBFBD><EFBFBD><EFBFBD>", minH, minS);
//ͨ<><CDA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>е<EFBFBD>ջ<EFBFBD><D5BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>µ<EFBFBD>minH<6E><48>minS
minH = int.MaxValue;
minS = -1;
for (int i = 0; i < h.Length; i++)
{
if (h[i].IsEmpty() == false && h[i].StackTop < minH)
{
minH = h[i].StackTop;
minS = i;
}
}
}
/// <summary>
/// <20><>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>з<EFBFBD><D0B7><EFBFBD><EBB3B5>C
/// </summary>
/// <param name="c"><3E><><EFBFBD><EFBFBD><EBB3B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD></param>
/// <param name="minH">ջ<><D5BB><EFBFBD><EFBFBD><EFBFBD>ŵ<EFBFBD><C5B5><EFBFBD>Сֵ</param>
/// <param name="minS">ջ<><D5BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Сֵ<D0A1><D6B5><EFBFBD>ڶ<EFBFBD>ջ<EFBFBD>ı<EFBFBD><C4B1><EFBFBD></param>
/// <param name="h"><3E><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD></param>
/// <returns><3E><><EFBFBD><EFBFBD>û<EFBFBD>п<EFBFBD><D0BF>õĻ<C3B5><C4BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>򷵻<EFBFBD>false<73><65><EFBFBD><EFBFBD><EFBFBD>򷵻<EFBFBD>true<75><65></returns>
static bool Input(int c, ref int minH, ref int minS, LinkStack<int>[] h)
{
int bestTrack = -1; //Ŀǰ<C4BF><C7B0><EFBFBD>ŵ<EFBFBD><C5B5><EFBFBD><EFBFBD><EFBFBD>
int bestTop = int.MaxValue; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵ<EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
for (int i = 0; i < h.Length; i++)
{
if (h[i].IsEmpty() == false)
{
int x = h[i].StackTop;
if (c < x && x < bestTop)
{
bestTop = x;
bestTrack = i;
}
}
else
{
if (bestTrack == -1)
{
bestTrack = i;
break;
}
}
}
if (bestTrack == -1)
return false;
h[bestTrack].Push(c);
Console.WriteLine("<EFBFBD>ƶ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>᣺{0}<7D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><ECB5BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>{1}<7D><>", c, bestTrack);
if (c < minH)
{
minH = c;
minS = bestTrack;
}
return true;
}
static void Main(string[] args)
{
int[] p = new int[] {3, 6, 9, 2, 4, 7, 1, 8, 5};
int k = 1;
bool result = RailRoad(p, k);
do
{
if (result == false)
{
Console.WriteLine("<EFBFBD><EFBFBD>Ҫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ļ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD>ӵ<EFBFBD><D3B5><EFBFBD><EFBFBD><EFBFBD>:");
k = k + Convert.ToInt32(Console.ReadLine());
result = RailRoad(p, k);
}
} while (result == false);
}
}
}
```

View File

@@ -0,0 +1,572 @@
# Task04<30><34><EFBFBD><EFBFBD><EFBFBD>У<EFBFBD>2<EFBFBD>
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҳ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ǿ<EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD>õ<EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݽṹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͼ<EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ˣ<EFBFBD>ȥʳ<EFBFBD>ô򷹵ȶ<EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD>Ŷӣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˻<EFBFBD><EFBFBD>򷹵<EFBFBD>˳<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ŷӵ<EFBFBD>˳<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͬ<EFBFBD>ģ<EFBFBD><EFBFBD><EFBFBD>˭<EFBFBD><EFBFBD><EFBFBD>ŶӾ<EFBFBD>Ϊ˭<EFBFBD>ȷ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
![](https://img-blog.csdnimg.cn/20191223190948974.png)
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӡ<EFBFBD><EFBFBD><EFBFBD>ϣ<EFBFBD><EFBFBD><EFBFBD>Щ<EFBFBD><EFBFBD><EFBFBD>Ƕ<EFBFBD><EFBFBD>еľ<EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD>á<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǰ<EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><EFBFBD><EFBFBD>͵<EFBFBD><EFBFBD>ʼ<EFBFBD><EFBFBD>ȷŵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ͷ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>У<EFBFBD>Ȼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>շ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˳<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>з<EFBFBD><EFBFBD>ͣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><EFBFBD>ӡ<EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><EFBFBD>ȷŵ<EFBFBD><EFBFBD><EFBFBD>ӡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>У<EFBFBD> Ȼ<><C8BB><EFBFBD><EFBFBD><EFBFBD>շ<EFBFBD><D5B7><EFBFBD><EFBFBD><EFBFBD>˳<EFBFBD><CBB3><EFBFBD><EFBFBD><EFBFBD>д<EFBFBD>ӡ<EFBFBD><D3A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ǿ<EFBFBD><C7BE><EFBFBD><EFBFBD><EFBFBD>ϸ<EFBFBD><CFB8><EFBFBD>ܡ<EFBFBD><DCA1><EFBFBD><EFBFBD>С<EFBFBD><D0A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݽṹ<DDBD><E1B9B9>
## 1. <20><><EFBFBD>еĶ<D0B5><C4B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
**1.1 <20><><EFBFBD>еĶ<D0B5><C4B6><EFBFBD>**
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӣ<EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD>ˣ<EFBFBD><EFBFBD><EFBFBD>β<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>ɾ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD>ˣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ף<EFBFBD><EFBFBD><EFBFBD><EFBFBD>е<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ա<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƚ<EFBFBD><EFBFBD>ȳ<EFBFBD><EFBFBD><EFBFBD>First In First Out<75><74><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ա<EFBFBD><D4B1><EFBFBD>
<EFBFBD><EFBFBD>1 <20><><EFBFBD><EFBFBD><EFBFBD>Ա<EFBFBD>`a0,a1,...,an`<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD>
![˳<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>](https://img-blog.csdnimg.cn/20191223191501199.png)
![<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>](https://img-blog.csdnimg.cn/20191223191548730.png)
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҳ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʵ<EFBFBD>ַ<EFBFBD>ʽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʵ<EFBFBD>ַ<EFBFBD>ʽ<EFBFBD>ĶԱ<EFBFBD><EFBFBD>Ѿ<EFBFBD><EFBFBD><EFBFBD>ջ<EFBFBD><EFBFBD><EFBFBD>ݹ鲿<EFBFBD>ֽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>˽<EFBFBD><EFBFBD>ͣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ͳ<EFBFBD><EFBFBD><EFBFBD>׸<EFBFBD><EFBFBD><EFBFBD>ˡ<EFBFBD>
**1.2 <20><><EFBFBD>еIJ<D0B5><C4B2><EFBFBD>**
- <20><><EFBFBD>Ӳ<EFBFBD><D3B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ԫ<EFBFBD>ز<EFBFBD><D8B2><EFBFBD><EFBFBD><EFBFBD>β<EFBFBD><CEB2>
- <20><><EFBFBD>Ӳ<EFBFBD><D3B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƴ<EFBFBD><C6B3><EFBFBD><EFBFBD>׵<EFBFBD><D7B5><EFBFBD><EFBFBD><EFBFBD>Ԫ<EFBFBD>ء<EFBFBD>
- <20>Ƿ<EFBFBD>Ϊ<EFBFBD>գ<EFBFBD><D5A3>ж϶<D0B6><CFB6><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ԫ<EFBFBD>ء<EFBFBD>
- <20>õ<EFBFBD><C3B5>ӳ<EFBFBD><D3B3><EFBFBD><EFBFBD><EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>ʵ<EFBFBD>ʰ<EFBFBD><CAB0><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ԫ<EFBFBD>صĸ<D8B5><C4B8><EFBFBD><EFBFBD><EFBFBD>
- <20><><EFBFBD>ղ<EFBFBD><D5B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƴ<EFBFBD><C6B3><EFBFBD><EFBFBD>е<EFBFBD><D0B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ԫ<EFBFBD>ء<EFBFBD>
- <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>Ԫ<EFBFBD>ء<EFBFBD>
![<EFBFBD><EFBFBD><EFBFBD>нӿ<EFBFBD>](https://img-blog.csdnimg.cn/20191223191753857.png)
```c
using System;
namespace LinearStruct
{
/// <summary>
/// <20><><EFBFBD>еij<D0B5><C4B3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
/// </summary>
/// <typeparam name="T"><3E><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ԫ<EFBFBD>ص<EFBFBD><D8B5><EFBFBD><EFBFBD><EFBFBD></typeparam>
public interface IQueue<T> where T : IComparable<T>
{
/// <summary>
/// <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʵ<EFBFBD>ʰ<EFBFBD><CAB0><EFBFBD>Ԫ<EFBFBD>صĸ<D8B5><C4B8><EFBFBD>
/// </summary>
int Length { get; }
/// <summary>
/// <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>Ԫ<EFBFBD><D4AA>
/// </summary>
T QueueFront { get; }
/// <summary>
/// <20><><EFBFBD><EFBFBD>Ԫ<EFBFBD><D4AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
/// </summary>
/// <param name="data">Ҫ<><D2AA><EFBFBD>ӵ<EFBFBD>Ԫ<EFBFBD><D4AA></param>
void EnQueue(T data);
/// <summary>
/// <20><><EFBFBD><EFBFBD>Ԫ<EFBFBD>س<EFBFBD><D8B3><EFBFBD>
/// </summary>
void DeQueue();
/// <summary>
/// <20>ж϶<D0B6><CFB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD>Ԫ<EFBFBD><D4AA>
/// </summary>
/// <returns><3E><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ԫ<EFBFBD>ط<EFBFBD><D8B7><EFBFBD>false,<2C><><EFBFBD>򷵻<EFBFBD>true.</returns>
bool IsEmpty();
/// <summary>
/// <20>Ӷ<EFBFBD><D3B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƴ<EFBFBD><C6B3><EFBFBD><EFBFBD><EFBFBD>Ԫ<EFBFBD><D4AA>
/// </summary>
void Clear();
}
}
```
## 2. <20><><EFBFBD>еĴ洢<C4B4><E6B4A2>ʵ<EFBFBD><CAB5>
**2.1 ˳<><CBB3><EFBFBD>**
<u>˳<><CBB3><EFBFBD><EFBFBD><EFBFBD><EFBFBD></u>
˳<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>У<EFBFBD><EFBFBD><EFBFBD>Sequence Queue<75><65><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˳<EFBFBD><CBB3><EFBFBD><EFBFBD>ʵ<EFBFBD>ֵĶ<D6B5><C4B6>С<EFBFBD>
ʵ<EFBFBD>֣<EFBFBD>
![˳<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>](https://img-blog.csdnimg.cn/20191223192315765.png)
```c
using System;
namespace LinearStruct
{
/// <summary>
/// <20><>˳<EFBFBD><CBB3><EFBFBD><EFBFBD>ṹʵ<E1B9B9>ֵĶ<D6B5><C4B6><EFBFBD>--˳<><CBB3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
/// </summary>
/// <typeparam name="T">˳<><CBB3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ԫ<EFBFBD>ص<EFBFBD><D8B5><EFBFBD><EFBFBD><EFBFBD></typeparam>
public class SeqQueue<T> : IQueue<T> where T : IComparable<T>
{
private readonly SeqList<T> _lst;
/// <summary>
/// <20><>ʼ<EFBFBD><CABC>SeqQueue<75><65><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʵ<EFBFBD><CAB5>
/// </summary>
/// <param name="max">SeqQueue<75><65><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ԫ<EFBFBD>صĸ<D8B5><C4B8><EFBFBD></param>
public SeqQueue(int max)
{
if (max <= 0)
throw new ArgumentOutOfRangeException();
_lst = new SeqList<T>(max);
}
/// <summary>
/// <20><>ȡSeqQueue<75><65><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ԫ<EFBFBD>صĸ<D8B5><C4B8><EFBFBD>
/// </summary>
public int MaxSize
{
get { return _lst.MaxSize; }
}
/// <summary>
/// <20><>ȡSeqQueue<75><65>ʵ<EFBFBD>ʰ<EFBFBD><CAB0><EFBFBD>Ԫ<EFBFBD>صĸ<D8B5><C4B8><EFBFBD>
/// </summary>
public int Length
{
get { return _lst.Length; }
}
/// <summary>
/// <20><>ȡSeqQueue<75>еĶ<D0B5><C4B6><EFBFBD>Ԫ<EFBFBD><D4AA>
/// </summary>
public T QueueFront
{
get
{
if (_lst.IsEmpty())
throw new Exception("<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><EFBFBD>,<2C><><EFBFBD>ܵõ<DCB5><C3B5><EFBFBD><EFBFBD><EFBFBD>Ԫ<EFBFBD><D4AA>.");
return _lst[0];
}
}
/// <summary>
/// <20><><EFBFBD><EFBFBD>Ԫ<EFBFBD><D4AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
/// </summary>
/// <param name="data">Ҫ<><D2AA><EFBFBD>ӵ<EFBFBD>Ԫ<EFBFBD><D4AA></param>
public void EnQueue(T data)
{
if (_lst.Length == _lst.MaxSize)
throw new Exception("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.");
_lst.Insert(_lst.Length, data);
}
/// <summary>
/// <20><><EFBFBD><EFBFBD>Ԫ<EFBFBD>س<EFBFBD><D8B3><EFBFBD>
/// </summary>
public void DeQueue()
{
if (_lst.IsEmpty())
throw new Exception("<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><EFBFBD>,<2C><><EFBFBD>ܳ<EFBFBD><DCB3><EFBFBD>.");
_lst.Remove(0);
}
/// <summary>
/// <20>ж϶<D0B6><CFB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD>Ԫ<EFBFBD><D4AA>
/// </summary>
/// <returns><3E><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ԫ<EFBFBD>ط<EFBFBD><D8B7><EFBFBD>false,<2C><><EFBFBD>򷵻<EFBFBD>true.</returns>
public bool IsEmpty()
{
return _lst.IsEmpty();
}
/// <summary>
/// <20>Ӷ<EFBFBD><D3B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƴ<EFBFBD><C6B3><EFBFBD><EFBFBD><EFBFBD>Ԫ<EFBFBD><D4AA>
/// </summary>
public void Clear()
{
_lst.Clear();
}
}
}
```
<u>ѭ<><D1AD><EFBFBD><EFBFBD><EFBFBD><EFBFBD></u>
ѭ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>У<EFBFBD>Circular Sequence Queue<75><65><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѭ<EFBFBD><D1AD><EFBFBD>ķ<EFBFBD>ʽʵ<CABD>ֵĶ<D6B5><C4B6>С<EFBFBD>
![ѭ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>й<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ](https://img-blog.csdnimg.cn/20191223192517344.png)
ʵ<EFBFBD>֣<EFBFBD>
![ѭ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>](https://img-blog.csdnimg.cn/20191223192722855.png)
```c
using System;
namespace LinearStruct
{
/// <summary>
/// <20><>˳<EFBFBD><CBB3><EFBFBD><EFBFBD>ṹʵ<E1B9B9>ֵĶ<D6B5><C4B6><EFBFBD>--ѭ<><D1AD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
/// </summary>
/// <typeparam name="T">ѭ<><D1AD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ԫ<EFBFBD>ص<EFBFBD><D8B5><EFBFBD><EFBFBD><EFBFBD></typeparam>
public class CSeqQueue<T> : IQueue<T> where T : IComparable<T>
{
private int _pFront;
private int _pRear;
private readonly T[] _dataset;
/// <summary>
/// <20><>ȡCSeqQueue<75><65>ʵ<EFBFBD>ʰ<EFBFBD><CAB0><EFBFBD>Ԫ<EFBFBD>صĸ<D8B5><C4B8><EFBFBD>
/// </summary>
public int Length { get; private set; }
/// <summary>
/// <20><>ȡCSeqQueue<75><65><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ԫ<EFBFBD>صĸ<D8B5><C4B8><EFBFBD>
/// </summary>
public int MaxSize { get; }
/// <summary>
/// <20><>ȡCSeqQueue<75>еĶ<D0B5><C4B6><EFBFBD>Ԫ<EFBFBD><D4AA>
/// </summary>
public T QueueFront
{
get
{
if (Length == 0)
throw new Exception("<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD>ղ<EFBFBD><EFBFBD>ܵõ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ԫ<EFBFBD><EFBFBD>.");
return _dataset[_pFront];
}
}
/// <summary>
/// <20><>ʼ<EFBFBD><CABC>CSeqQueue<75><65><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʵ<EFBFBD><CAB5>
/// </summary>
/// <param name="max">CSeqQueue<75><65><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ԫ<EFBFBD>صĸ<D8B5><C4B8><EFBFBD></param>
public CSeqQueue(int max)
{
if (max <= 0)
throw new ArgumentOutOfRangeException();
MaxSize = max;
Length = 0;
_dataset = new T[MaxSize];
_pFront = 0;
_pRear = 0;
}
/// <summary>
/// <20><><EFBFBD><EFBFBD>Ԫ<EFBFBD><D4AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
/// </summary>
/// <param name="data">Ҫ<><D2AA><EFBFBD>ӵ<EFBFBD>Ԫ<EFBFBD><D4AA></param>
public void EnQueue(T data)
{
if (Length == MaxSize)
throw new Exception("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.");
_dataset[_pRear] = data;
_pRear = (_pRear + 1)%MaxSize;
Length++;
}
/// <summary>
/// <20><><EFBFBD><EFBFBD>Ԫ<EFBFBD>س<EFBFBD><D8B3><EFBFBD>
/// </summary>
public void DeQueue()
{
if (Length == 0)
throw new Exception("<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><EFBFBD>,<2C><><EFBFBD>ܳ<EFBFBD><DCB3><EFBFBD>.");
_pFront = (_pFront + 1)%MaxSize;
Length--;
}
/// <summary>
/// <20>ж϶<D0B6><CFB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD>Ԫ<EFBFBD><D4AA>
/// </summary>
/// <returns><3E><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ԫ<EFBFBD>ط<EFBFBD><D8B7><EFBFBD>false,<2C><><EFBFBD>򷵻<EFBFBD>true.</returns>
public bool IsEmpty()
{
return Length == 0;
}
/// <summary>
/// <20>Ӷ<EFBFBD><D3B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƴ<EFBFBD><C6B3><EFBFBD><EFBFBD><EFBFBD>Ԫ<EFBFBD><D4AA>
/// </summary>
public void Clear()
{
_pFront = 0;
_pRear = 0;
Length = 0;
}
}
}
```
**2.2 <20><>ʽ<EFBFBD><EFBFBD><E6B4A2><EFBFBD><EFBFBD><EFBFBD>ӣ<EFBFBD>**
<EFBFBD><EFBFBD><EFBFBD>ӣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>õ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʵ<EFBFBD>ֵĶ<EFBFBD><EFBFBD>С<EFBFBD>
ʵ<EFBFBD>֣<EFBFBD>
![<EFBFBD><EFBFBD><EFBFBD><EFBFBD>](https://img-blog.csdnimg.cn/20191223192940470.png)
```c
using System;
namespace LinearStruct
{
/// <summary>
/// <20><><EFBFBD><EFBFBD>ʽ<EFBFBD><EFBFBD>ṹʵ<E1B9B9>ֵĶ<D6B5><C4B6><EFBFBD>
/// </summary>
/// <typeparam name="T"><3E><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ԫ<EFBFBD>ص<EFBFBD><D8B5><EFBFBD><EFBFBD><EFBFBD></typeparam>
public class LinkQueue<T> : IQueue<T> where T : IComparable<T>
{
private readonly SLinkList<T> _lst;
/// <summary>
/// <20><>ȡLinkQueue<75><65>ʵ<EFBFBD>ʰ<EFBFBD><CAB0><EFBFBD>Ԫ<EFBFBD>صĸ<D8B5><C4B8><EFBFBD>
/// </summary>
public int Length
{
get { return _lst.Length; }
}
/// <summary>
/// <20><>ȡLinkQueue<75>еĶ<D0B5><C4B6><EFBFBD>Ԫ<EFBFBD><D4AA>
/// </summary>
public T QueueFront
{
get
{
if (_lst.IsEmpty())
throw new Exception("<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><EFBFBD>,<2C><><EFBFBD><EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>Ԫ<EFBFBD><D4AA>.");
return _lst[0];
}
}
/// <summary>
/// <20><>ʼ<EFBFBD><CABC>LinkQueue<75><65><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʵ<EFBFBD><CAB5>
/// </summary>
public LinkQueue()
{
_lst = new SLinkList<T>();
}
/// <summary>
/// <20><><EFBFBD><EFBFBD>Ԫ<EFBFBD><D4AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
/// </summary>
/// <param name="data">Ҫ<><D2AA><EFBFBD>ӵ<EFBFBD>Ԫ<EFBFBD><D4AA></param>
public void EnQueue(T data)
{
_lst.InsertAtRear(data);
}
/// <summary>
/// <20><><EFBFBD><EFBFBD>Ԫ<EFBFBD>س<EFBFBD><D8B3><EFBFBD>
/// </summary>
public void DeQueue()
{
if (_lst.IsEmpty())
throw new Exception("<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><EFBFBD>,<2C><><EFBFBD>ܳ<EFBFBD><DCB3><EFBFBD>.");
_lst.Remove(0);
}
/// <summary>
/// <20>ж϶<D0B6><CFB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD>Ԫ<EFBFBD><D4AA>
/// </summary>
/// <returns><3E><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ԫ<EFBFBD>ط<EFBFBD><D8B7><EFBFBD>false,<2C><><EFBFBD>򷵻<EFBFBD>true.</returns>
public bool IsEmpty()
{
return _lst.IsEmpty();
}
/// <summary>
/// <20>Ӷ<EFBFBD><D3B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƴ<EFBFBD><C6B3><EFBFBD><EFBFBD><EFBFBD>Ԫ<EFBFBD><D4AA>
/// </summary>
public void Clear()
{
_lst.Clear();
}
}
}
```
## 3. <20><>ϰ<EFBFBD>ο<EFBFBD><CEBF><EFBFBD><EFBFBD><EFBFBD>
**1. ģ<><C4A3><EFBFBD><EFBFBD><EFBFBD>з<EFBFBD><D0B7><EFBFBD><EFBFBD>ij<EFBFBD><C4B3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>**
<EFBFBD><EFBFBD><EFBFBD>´<EFBFBD><EFBFBD><EFBFBD>Ϊ`C#`<EFBFBD><EFBFBD><EFBFBD>
<EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD><EFBFBD>еĽӿ<EFBFBD>
```c
using LinearStruct;
namespace BankQueue
{
public interface IBankQueue : IQueue<int>
{
/// <summary>
/// <20><><EFBFBD>÷<EFBFBD><C3B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
/// </summary>
/// <returns><3E><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD></returns>
int GetCallnumber();
int MaxSize { get; }
}
}
```
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD><EFBFBD><EFBFBD>
```c
using LinearStruct;
namespace BankQueue
{
public class LinkBankQueue : LinkQueue<int>, IBankQueue
{
public int Callnumber { get; private set; }
public int MaxSize { get; }
public int GetCallnumber()
{
if (IsEmpty() && Callnumber == 0)
{
Callnumber = 1;
}
else
{
Callnumber++;
}
return Callnumber;
}
public LinkBankQueue()
{
MaxSize = default(int);
Callnumber = 0;
}
}
}
```
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>˳<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD><EFBFBD><EFBFBD>
```c
using LinearStruct;
namespace BankQueue
{
public class CSeqBankQueue : CSeqQueue<int>, IBankQueue
{
public int Callnumber { get; private set; }
public CSeqBankQueue(int size) : base(size)
{
Callnumber = 0;
}
public int GetCallnumber()
{
if (IsEmpty() && Callnumber == 0)
{
Callnumber = 1;
}
else
{
Callnumber++;
}
return Callnumber;
}
}
}
```
<EFBFBD><EFBFBD><EFBFBD>񴰿<EFBFBD>
```c
using System;
using System.Threading;
namespace BankQueue
{
public class ServiceWindow
{
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
public IBankQueue BankQ { get; set; }
//<2F>̷߳<DFB3><CCB7><EFBFBD>
public void Service()
{
while (true)
{
lock (BankQ)
{
Thread.Sleep(2000);
if (!BankQ.IsEmpty())
{
Console.WriteLine();
Console.WriteLine("<EFBFBD><EFBFBD>{0}<7D>ŵ<EFBFBD>{1}<7D>Ŵ<EFBFBD><C5B4><EFBFBD>!", BankQ.QueueFront, Thread.CurrentThread.Name);
BankQ.DeQueue();
}
}
}
}
}
}
```
<EFBFBD>ͻ<EFBFBD><EFBFBD><EFBFBD>
```c
using System;
using System.Threading;
namespace BankQueue
{
class BankQueueApp
{
public static void Main(string[] args)
{
try
{
IBankQueue bankQueue = null;
Console.WriteLine("<EFBFBD><EFBFBD>ѡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͣ<EFBFBD>1.˳<><CBB3><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 2.<2E><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
string seleflag = Console.ReadLine();
switch (seleflag)
{
case "1":
Console.Write("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>п<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
int count = Convert.ToInt32(Console.ReadLine());
bankQueue = new CSeqBankQueue(count);
break;
case "2":
bankQueue = new LinkBankQueue();
break;
}
int windowcount = 3;
ServiceWindow[] serviceWindows = new ServiceWindow[windowcount];
Thread[] serviceThread = new Thread[windowcount];
for (int i = 0; i < windowcount; i++)
{
serviceWindows[i] = new ServiceWindow();
serviceWindows[i].BankQ = bankQueue;
serviceThread[i] = new Thread(serviceWindows[i].Service);
serviceThread[i].Name = (i + 1).ToString();
serviceThread[i].Start();
}
while (true)
{
Console.Write("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD>");
Console.ReadLine();
if (bankQueue != null && (bankQueue.Length < bankQueue.MaxSize || seleflag == "2"))
{
int callnumber = bankQueue.GetCallnumber();
Console.WriteLine("<EFBFBD><EFBFBD><EFBFBD>ĺ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǣ<EFBFBD>{0}<7D><><EFBFBD><EFBFBD>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD>{1}λ<><CEBB><EFBFBD><EFBFBD><EFBFBD>ȴ<EFBFBD><C8B4><EFBFBD>",
callnumber, bankQueue.Length);
bankQueue.EnQueue(callnumber);
}
else
Console.WriteLine("<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>æ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ժ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
Console.WriteLine();
}
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
}
}
}
```

View File

@@ -0,0 +1,553 @@
# Task05<30><35><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD>2<EFBFBD>
<EFBFBD><EFBFBD><EFBFBD>ǹ<EFBFBD><EFBFBD><EFBFBD>û<EFBFBD>е<EFBFBD>Ӱ<EFBFBD><EFBFBD><EFBFBD>ӣ<EFBFBD>û<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϸ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ǿͻ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һЩ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϸ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֡<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>δ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>خд<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD>ʫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ңɽ<EFBFBD><EFBFBD>ˮ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֪<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD>ƣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѳɺ<EFBFBD><EFBFBD><EFBFBD>ʫ<EFBFBD><EFBFBD>;·<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ã<EFBFBD>Ѷ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ļس١<EFBFBD><EFBFBD>µ<EFBFBD><EFBFBD><EFBFBD>ҹ<EFBFBD><EFBFBD><EFBFBD>ȼţ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ȼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϲ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>źͶ<EFBFBD><EFBFBD>ӵ<EFBFBD>ʫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>޶<EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֮<EFBFBD>֣<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD>˳<EFBFBD><EFBFBD><EFBFBD>û<EFBFBD>лؼң<EFBFBD>Ҳ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ŷ<EFBFBD><EFBFBD>أ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>͵<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ˣ<EFBFBD><EFBFBD>ܲ<EFBFBD><EFBFBD>˸<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϸһ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֣<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʫ<EFBFBD><EFBFBD>Ȼ<EFBFBD><EFBFBD><EFBFBD>Ե<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>򣬼<EFBFBD><EFBFBD>ȳ<EFBFBD>ҹ<EFBFBD>صƹ¡<EFBFBD><EFBFBD>ٻؼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ѷ<EFBFBD><EFBFBD><EFBFBD>ñ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>·;<EFBFBD><EFBFBD>ʫ<EFBFBD>Ϻͳ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>±ʣ<EFBFBD><EFBFBD>Ʊ<EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD>¿պ<EFBFBD><EFBFBD><EFBFBD>֪<EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ˮ<EFBFBD><EFBFBD>ɽң<EFBFBD><EFBFBD><EFBFBD>ۿݡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӷ<EFBFBD><EFBFBD>ɷ<EFBFBD><EFBFBD><EFBFBD>˼<EFBFBD><EFBFBD>Ϲ<EFBFBD><EFBFBD><EFBFBD>þã<EFBFBD>·;ңԶ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>д<EFBFBD>Ų<EFBFBD>֪<EFBFBD><EFBFBD>дʲô<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ԺȾ<EFBFBD>Ҳûʲô<EFBFBD><EFBFBD><EFBFBD>¡<EFBFBD>ֻ<EFBFBD>ܺͶ<EFBFBD><EFBFBD><EFBFBD>ҹҹ<EFBFBD><EFBFBD><EFBFBD>ڼ<EFBFBD><EFBFBD><EFBFBD>һյ<EFBFBD>µ<EFBFBD><EFBFBD>£<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϲ<EFBFBD><EFBFBD>Ĺ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD>ֿ<EFBFBD><EFBFBD>Ե<EFBFBD><EFBFBD><EFBFBD><EFBFBD>򷴸<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ķ<EFBFBD><EFBFBD><EFBFBD>ʫ<EFBFBD><EFBFBD>ղ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>׾<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɷ<EFBFBD>˼<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˼<EFBFBD><EFBFBD><EFBFBD>ɷ<EFBFBD><EFBFBD>Ĺ<EFBFBD>ʫ<EFBFBD><EFBFBD><EFBFBD>Dz<EFBFBD><EFBFBD>Ǹо<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>أ<EFBFBD>
<EFBFBD><EFBFBD>Ӣ<EFBFBD>ĵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>У<EFBFBD>ͬ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ĵط<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><EFBFBD> lover Ҳ<>и<EFBFBD> over<65><72><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9> friend Ҳ<>и<EFBFBD> end<6E><64><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9> believe Ҳ<>и<EFBFBD> lie<69><65><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֣<EFBFBD><D6A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɣ<EFBFBD><C9A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʣ<EFBFBD>ȴ<EFBFBD><C8B4>ij<EFBFBD><C4B3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵ<EFBFBD><CFB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ǵ<EFBFBD><C7B4><EFBFBD><EFBFBD><EFBFBD><E2BCB8><EFBFBD><EFBFBD><EFBFBD>ʵ<EFBFBD><CAB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҳû<D2B2><C3BB><EFBFBD><EFBFBD><EBB5BD><EFBFBD><EFBFBD><EFBFBD>
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ǿ<EFBFBD>Ҫ<EFBFBD><EFBFBD≯̸<EFBFBD><EFBFBD>Щ<EFBFBD><EFBFBD><EFBFBD>ʻ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
## 1. <20><><EFBFBD>Ķ<EFBFBD><C4B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
**1.1 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ض<EFBFBD><D8B6><EFBFBD>**
- <20><><EFBFBD><EFBFBD>string<6E><67><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD>ɵ<EFBFBD><C9B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>У<EFBFBD><D0A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ`S=<3D><>a0a1...an<61><6E>`<EFBFBD><EFBFBD>
- <20><><EFBFBD>а<EFBFBD><D0B0><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7>ĸ<EFBFBD><C4B8><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD>ij<EFBFBD><C4B3>ȡ<EFBFBD>
- <20><><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD>Ĵ<EFBFBD><C4B4><EFBFBD>Ϊ<EFBFBD>մ<EFBFBD><D5B4><EFBFBD>null string<6E><67><EFBFBD><EFBFBD>ֱ<EFBFBD><D6B1><EFBFBD><EFBFBD>˫<EFBFBD><CBAB><EFBFBD>š<EFBFBD><C5A1><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>C#<23><>Ҳ<EFBFBD><D2B2><EFBFBD><EFBFBD>`string.Empty`<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD>
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>һЩ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><EFBFBD><EFBFBD>ͣ<EFBFBD>
- <20>հ״<D5B0><D7B4><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ո<EFBFBD><D5B8><EFBFBD><EFBFBD>ɵĴ<C9B5><C4B4><EFBFBD>
- <20>Ӵ<EFBFBD><D3B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD>ɵ<EFBFBD><C9B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>У<EFBFBD><D0A3><EFBFBD>Ϊ<EFBFBD>ô<EFBFBD><C3B4><EFBFBD><EFBFBD>Ӵ<EFBFBD><D3B4><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD>İ<EFBFBD><C4B0><EFBFBD><EFBFBD>Ӵ<EFBFBD><D3B4>Ĵ<EFBFBD><C4B4><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӵ<EFBFBD><D3B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD>֡<EFBFBD>
- <20>Ӵ<EFBFBD><D3B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>е<EFBFBD>λ<EFBFBD>ã<EFBFBD><C3A3>Ӵ<EFBFBD><D3B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>е<EFBFBD>һ<EFBFBD>γ<EFBFBD><CEB3><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD>Ӵ<EFBFBD><D3B4><EFBFBD>һ<EFBFBD><D2BB><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>е<EFBFBD><D0B5><EFBFBD><EFBFBD>š<EFBFBD>
```
<EFBFBD><EFBFBD><EFBFBD>
A=<3D><>this is a string<6E><67>;
B=<3D><>is<69><73>;
B<EFBFBD><EFBFBD>A<EFBFBD>е<EFBFBD>λ<EFBFBD><EFBFBD>Ϊ2<EFBFBD><EFBFBD>
```
- <20><><EFBFBD><EFBFBD><EFBFBD>ȣ<EFBFBD><C8A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҷ<EFBFBD>Ӧλ<D3A6>ַ<EFBFBD><D6B7><EFBFBD>ͬ<EFBFBD><CDAC>
**1.2 <20><><EFBFBD>IJ<EFBFBD><C4B2><EFBFBD>**
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>߼<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ա<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƣ<EFBFBD><EFBFBD><EFBFBD>֮ͬ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ե<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҳ<EFBFBD><EFBFBD><EFBFBD>Ǵ<EFBFBD><EFBFBD>е<EFBFBD>Ԫ<EFBFBD>ض<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ˣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD><EFBFBD>Ļ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ա<EFBFBD><EFBFBD><EFBFBD><EFBFBD>кܴ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ġ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ա<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ע<EFBFBD><EFBFBD><EFBFBD>ǵ<EFBFBD><EFBFBD><EFBFBD>Ԫ<EFBFBD>صIJ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD>Ԫ<EFBFBD>أ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɾ<EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD>Ԫ<EFBFBD>أ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>и<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǹ<EFBFBD>ע<EFBFBD><EFBFBD><EFBFBD>Ӵ<EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӵ<EFBFBD>λ<EFBFBD>ã<EFBFBD><EFBFBD>õ<EFBFBD>ָ<EFBFBD><EFBFBD>λ<EFBFBD><EFBFBD><EFBFBD>Ӵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӵ<EFBFBD><EFBFBD>Ȳ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
<EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD><EFBFBD>Ļ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>£<EFBFBD>
- <20><>1<EFBFBD><31><EFBFBD><EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD>ij<EFBFBD><C4B3><EFBFBD>
- <20><>2<EFBFBD><32><EFBFBD><EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD>
- <20><>3<EFBFBD><33><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8>λ<EFBFBD>ò<EFBFBD><C3B2><EFBFBD><EFBFBD>Ӵ<EFBFBD>
- <20><>4<EFBFBD><34><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8>λ<EFBFBD><CEBB><EFBFBD>Ƴ<EFBFBD><C6B3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȵ<EFBFBD><C8B5>Ӵ<EFBFBD>
- <20><>5<EFBFBD><35><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8>λ<EFBFBD><CEBB>ȡ<EFBFBD>Ӵ<EFBFBD>
- <20><>6<EFBFBD><36><EFBFBD><EFBFBD>ǰ<EFBFBD><C7B0><EFBFBD>Ŀ<EFBFBD><C4BF><EFBFBD>
- <20><>7<EFBFBD><37><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
- <20><>8<EFBFBD><38><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƥ<EFBFBD><C6A5>
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>C#<23>У<EFBFBD><D0A3>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>`ToLower`תСд<EFBFBD><EFBFBD>`ToUpper`ת<EFBFBD><EFBFBD>д<EFBFBD><EFBFBD>`IndexOf`<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӵ<EFBFBD>λ<EFBFBD>á<EFBFBD>`LastIndexOf`<EFBFBD><EFBFBD><EFBFBD>Ҳ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӵ<EFBFBD>λ<EFBFBD>á<EFBFBD>`Trim`ȥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>߿ո<EFBFBD><EFBFBD>ȱȽϷ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>IJ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǰ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Щ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>չ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
![<EFBFBD><EFBFBD><EFBFBD>ӿ<EFBFBD>](https://img-blog.csdnimg.cn/20191223194206307.png)
## 2. <20><><EFBFBD>Ĵ洢<C4B4><E6B4A2>ʵ<EFBFBD><CAB5>
<EFBFBD><EFBFBD><EFBFBD>Ĵ洢<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ա<EFBFBD><EFBFBD><EFBFBD>ͬ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><EFBFBD><EFBFBD>֣<EFBFBD>
- ˳<><CBB3><EFBFBD><EFBFBD><E6B4A2>char<61><72><EFBFBD>͵<EFBFBD><CDB5><EFBFBD><EFBFBD><EFBFBD><E9A1A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƕ<EFBFBD><C7B6><EFBFBD><EFBFBD>ģ<EFBFBD><C4A3>ʹ<EFBFBD><CDB4><EFBFBD>һ<EFBFBD><D2BB>Ԥ<EFBFBD><D4A4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>󴮳<EFBFBD><F3B4AEB3>ȣ<EFBFBD><C8A3><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EBB4AE><EFBFBD>ȵĽ<C8B5><C4BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>`<60><>\0<><30>`<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD>ֵ<EFBFBD><EFBFBD><EFBFBD>ս
- <20><>ʽ<EFBFBD><EFBFBD><E6B4A2>`SlinkList<char>` <20><><EFBFBD>˷Ѵ<D1B4>ռ
![˳<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͼ](https://img-blog.csdnimg.cn/20191223194433900.png)
```c
using System;
namespace LinearStruct
{
/// <summary>
/// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>͵<EFBFBD>ʵ<EFBFBD><CAB5>--˳<><CBB3><EFBFBD><EFBFBD>
/// </summary>
public class SeqString : IString
{
/// <summary>
///
/// </summary>
protected readonly char[] CStr; //<2F>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD>'\0'<27><><EFBFBD><EFBFBD>
/// <summary>
/// <20><>ʼ<EFBFBD><CABC>SeqString<6E><67><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʵ<EFBFBD><CAB5>
/// </summary>
public SeqString()
{
CStr = new char[] {'\0'};
}
/// <summary>
/// <20><>ʼ<EFBFBD><CABC>SeqString<6E><67><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʵ<EFBFBD><CAB5>
/// </summary>
/// <param name="s"><3E><>ʼ<EFBFBD>ַ<EFBFBD><D6B7><EFBFBD></param>
public SeqString(string s)
{
if (s == null)
throw new ArgumentNullException();
int length = s.Length;
CStr = new char[length + 1];
for (int i = 0; i < length; i++)
CStr[i] = s[i];
CStr[length] = '\0';
}
/// <summary>
/// <20><>ʼ<EFBFBD><CABC>SeqString<6E><67><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʵ<EFBFBD><CAB5><><D6BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڲ<EFBFBD>ʹ<EFBFBD><CAB9>)
/// </summary>
/// <param name="length"><3E><><EFBFBD>ij<EFBFBD><C4B3><EFBFBD></param>
protected SeqString(int length)
{
if (length < 0)
throw new ArgumentOutOfRangeException();
CStr = new char[length + 1];
CStr[length] = '\0';
}
/// <summary>
/// <20>Ҷ<EFBFBD><D2B6><EFBFBD><EFBFBD><EFBFBD>ʵ<EFBFBD><CAB5><EFBFBD>е<EFBFBD><D0B5>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD> Unicode <20>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դﵽָ<EFB5BD><D6B8><EFBFBD><EFBFBD><EFBFBD>ܳ<EFBFBD><DCB3>ȡ<EFBFBD>
/// </summary>
/// <param name="totalWidth"><3E><><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD>е<EFBFBD><D0B5>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ԭʼ<D4AD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>κ<EFBFBD><CEBA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD></param>
/// <param name="paddingChar">Unicode <20><><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD></param>
/// <returns>
/// <20><>Ч<EFBFBD>ڴ<EFBFBD>ʵ<EFBFBD><CAB5><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD> IString<6E><67><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҷ<EFBFBD><D2B6><EFBFBD><EFBFBD>ģ<EFBFBD><C4A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ôﵽ totalWidth <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ŀ<EFBFBD><C4BF> paddingChar <20>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
/// <20><><EFBFBD><EFBFBD>totalWidth С<>ڴ<EFBFBD>ʵ<EFBFBD><CAB5><EFBFBD>ij<EFBFBD><C4B3>ȣ<EFBFBD><C8A3><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD>ʵ<EFBFBD><CAB5><EFBFBD><EFBFBD>ͬ<EFBFBD><CDAC><EFBFBD><EFBFBD> IString<6E><67>
/// </returns>
/// <remarks>
/// <20>쳣:
/// System.ArgumentOutOfRangeException:totalWidth С<><D0A1><EFBFBD>
/// </remarks>
public IString PadLeft(int totalWidth, char paddingChar)
{
if (totalWidth < 0)
throw new ArgumentOutOfRangeException();
if (Length >= totalWidth)
return Clone();
SeqString result = new SeqString(totalWidth);
int left = totalWidth - Length;
for (int i = 0; i < left; i++)
result.CStr[i] = paddingChar;
for (int i = 0; i < Length; i++)
result.CStr[i + left] = CStr[i];
return result;
}
/// <summary>
/// <20><>ȡ<EFBFBD><C8A1><EFBFBD>ij<EFBFBD><C4B3><EFBFBD>
/// </summary>
public int Length
{
get
{
int i = 0;
while (CStr[i] != '\0')
i++;
return i;
}
}
/// <summary>
/// <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD>
/// </summary>
/// <param name="index">Ҫ<><D2AA>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD>õ<EFBFBD><C3B5>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD>ʼ<E3BFAA><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD></param>
/// <returns>ָ<><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD></returns>
public char this[int index]
{
get
{
if (index < 0 || index > Length - 1)
throw new IndexOutOfRangeException();
return CStr[index];
}
set
{
if (index < 0 || index > Length - 1)
throw new IndexOutOfRangeException();
CStr[index] = value;
}
}
/// <summary>
/// <20><>ָ<EFBFBD><D6B8>λ<EFBFBD>ò<EFBFBD><C3B2><EFBFBD><EFBFBD>Ӵ<EFBFBD>
/// </summary>
/// <param name="startIndex"><3E><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB></param>
/// <param name="s"><3E><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӵ<EFBFBD></param>
/// <returns><3E><><EFBFBD><EFBFBD><EBB4AE><EFBFBD>õ<EFBFBD><C3B5><EFBFBD><EFBFBD>´<EFBFBD></returns>
public IString Insert(int startIndex, IString s)
{
if (s == null)
throw new ArgumentNullException();
if (startIndex < 0 || startIndex > Length)
throw new ArgumentOutOfRangeException();
SeqString str = new SeqString(s.Length + Length);
for (int i = 0; i < startIndex; i++)
str.CStr[i] = CStr[i]; //ע<><D7A2>str[i]ֱ<><D6B1>ʹ<EFBFBD><CAB9><EFBFBD>Ǵ<EFBFBD><C7B4><EFBFBD><EFBFBD><EFBFBD>
for (int i = 0, len = s.Length; i < len; i++)
str.CStr[i + startIndex] = s[i];
for (int i = startIndex; i < Length; i++)
str.CStr[i + s.Length] = CStr[i];
return str;
}
/// <summary>
/// <20><>ָ<EFBFBD><D6B8>λ<EFBFBD><CEBB><EFBFBD>Ƴ<EFBFBD><C6B3>Ӵ<EFBFBD>
/// </summary>
/// <param name="startIndex"><3E>Ƴ<EFBFBD><C6B3><EFBFBD>λ<EFBFBD><CEBB></param>
/// <param name="count"><3E>Ƴ<EFBFBD><C6B3>ij<EFBFBD><C4B3><EFBFBD></param>
/// <returns><3E>Ƴ<EFBFBD><C6B3><EFBFBD><EFBFBD>õ<EFBFBD><C3B5><EFBFBD><EFBFBD>´<EFBFBD></returns>
public IString Remove(int startIndex, int count)
{
if (startIndex < 0 || startIndex > Length - 1)
throw new ArgumentOutOfRangeException();
if (count < 0)
throw new ArgumentOutOfRangeException();
int left = Length - startIndex; //<2F><><EFBFBD><EFBFBD><EFBFBD>Ƴ<EFBFBD><C6B3>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD>
count = (left < count) ? left : count; //ʵ<><CAB5><EFBFBD>Ƴ<EFBFBD><C6B3>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD>
SeqString str = new SeqString(Length - count);
for (int i = 0; i < startIndex; i++)
str.CStr[i] = CStr[i];
for (int i = startIndex + count; i < Length; i++)
str.CStr[i - count] = CStr[i];
return str;
}
/// <summary>
/// <20><>ָ<EFBFBD><D6B8>λ<EFBFBD><CEBB>ȡ<EFBFBD>Ӵ<EFBFBD>
/// </summary>
/// <param name="startIndex">ȡ<>Ӵ<EFBFBD><D3B4><EFBFBD>λ<EFBFBD><CEBB></param>
/// <param name="count"><3E>Ӵ<EFBFBD><D3B4>ij<EFBFBD><C4B3><EFBFBD></param>
/// <returns>ȡ<>õ<EFBFBD><C3B5>Ӵ<EFBFBD></returns>
public IString SubString(int startIndex, int count)
{
if (startIndex < 0 || startIndex > Length - 1)
throw new ArgumentOutOfRangeException();
if (count < 0)
throw new ArgumentOutOfRangeException();
int left = Length - startIndex; //ȡ<>Ӵ<EFBFBD><D3B4><EFBFBD><EFBFBD>󳤶<EFBFBD>
count = (left < count) ? left : count; //<2F>Ӵ<EFBFBD>ʵ<EFBFBD>ʳ<EFBFBD><CAB3><EFBFBD>
SeqString str = new SeqString(count);
for (int i = 0; i < count; i++)
str.CStr[i] = CStr[i + startIndex];
return str;
}
/// <summary>
/// <20><>ǰ<EFBFBD><C7B0><EFBFBD>Ŀ<EFBFBD><C4BF><EFBFBD>
/// </summary>
/// <returns><3E><>ǰ<EFBFBD><C7B0><EFBFBD>Ŀ<EFBFBD><C4BF><EFBFBD></returns>
public IString Clone()
{
SeqString str = new SeqString(Length);
for (int i = 0; i < Length; i++)
str.CStr[i] = CStr[i];
return str;
}
/// <summary>
/// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
/// </summary>
/// <param name="s"><3E><>β<EFBFBD><CEB2>Ҫ<EFBFBD><D2AA><EFBFBD>ӵĴ<D3B5></param>
/// <returns><3E><><EFBFBD>Ӻ<EFBFBD><D3BA>õ<EFBFBD><C3B5><EFBFBD><EFBFBD>´<EFBFBD></returns>
public IString Concat(IString s)
{
if (s == null)
throw new ArgumentNullException();
return Insert(Length, s);
}
/// <summary>
/// <20><><EFBFBD><EFBFBD>ƥ<EFBFBD><C6A5>
/// </summary>
/// <param name="s">Ҫƥ<D2AA><C6A5><EFBFBD><EFBFBD><EFBFBD>Ӵ<EFBFBD></param>
/// <returns><3E>Ӵ<EFBFBD><D3B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>е<EFBFBD>λ<EFBFBD><CEBB>,<2C><><EFBFBD><EFBFBD><EFBFBD>ڷ<EFBFBD><DAB7><EFBFBD>-1.</returns>
public int FindParam(IString s)
{
if (s == null || s.Length == 0)
throw new Exception("ƥ<EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><EFBFBD><EFBFBD>Ϊnull<EFBFBD><EFBFBD><EFBFBD><EFBFBD>.");
for (int i = 0; i <= Length - s.Length; i++)
{
if (CStr[i] == s[0])
{
int j;
for (j = 1; j < s.Length; j++)
{
if (CStr[j + i] != s[j])
break;
}
if (j == s.Length)
return i;
}
}
return -1;
}
/// <summary>
/// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
/// </summary>
/// <param name="s1"><3E><>һ<EFBFBD><D2BB><EFBFBD><EFBFBD></param>
/// <param name="s2"><3E>ڶ<EFBFBD><DAB6><EFBFBD><EFBFBD><EFBFBD></param>
/// <returns><3E><><EFBFBD>Ӻ<EFBFBD><D3BA>õ<EFBFBD><C3B5><EFBFBD><EFBFBD>´<EFBFBD></returns>
public static SeqString operator +(SeqString s1, SeqString s2)
{
if (s1 == null || s2 == null)
throw new ArgumentNullException();
return s1.Concat(s2) as SeqString;
}
/// <summary>
/// SeqString<6E><67><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD>
/// </summary>
/// <returns>SeqString<6E><67><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD></returns>
public override string ToString()
{
string str = string.Empty;
for (int i = 0; i < Length; i++)
str += CStr[i];
return str;
}
/// <summary>
/// <20><><EFBFBD><EFBFBD>ƥ<EFBFBD><C6A5>
/// </summary>
/// <param name="value">Ҫƥ<D2AA><C6A5><EFBFBD><EFBFBD><EFBFBD>Ӵ<EFBFBD></param>
/// <returns><3E>Ӵ<EFBFBD><D3B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>е<EFBFBD>λ<EFBFBD><CEBB>,<2C><><EFBFBD><EFBFBD><EFBFBD>ڷ<EFBFBD><DAB7><EFBFBD>-1.</returns>
public int IndexOf(IString value)
{
if (value == null || value.Length == 0)
throw new Exception("ƥ<EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><EFBFBD><EFBFBD>Ϊnull<EFBFBD><EFBFBD><EFBFBD><EFBFBD>.");
return IndexOf(value, 0);
}
/// <summary>
/// <20><><EFBFBD><EFBFBD>ƥ<EFBFBD><C6A5>
/// </summary>
/// <param name="value">Ҫƥ<D2AA><C6A5><EFBFBD><EFBFBD><EFBFBD>Ӵ<EFBFBD></param>
/// <param name="startIndex">ƥ<><C6A5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼλ<CABC><CEBB></param>
/// <returns><3E>Ӵ<EFBFBD><D3B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>е<EFBFBD>λ<EFBFBD><CEBB>,<2C><><EFBFBD><EFBFBD><EFBFBD>ڷ<EFBFBD><DAB7><EFBFBD>-1.</returns>
public int IndexOf(IString value, int startIndex)
{
if (value == null || value.Length == 0)
throw new Exception("ƥ<EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><EFBFBD><EFBFBD>Ϊnull<EFBFBD><EFBFBD><EFBFBD><EFBFBD>.");
if (startIndex < 0 || startIndex > value.Length - 1)
throw new ArgumentOutOfRangeException();
for (int i = startIndex; i <= Length - value.Length; i++)
{
if (CStr[i] == value[0])
{
int j;
for (j = 1; j < value.Length; j++)
{
if (CStr[j + i] != value[j])
break;
}
if (j == value.Length)
return i;
}
}
return -1;
}
/// <summary>
/// <20><><EFBFBD><EFBFBD>ʵ<EFBFBD><CAB5><EFBFBD>е<EFBFBD>ָ<EFBFBD><D6B8> IString <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƥ<EFBFBD><C6A5><EFBFBD><EFBFBD><EFBFBD>滻Ϊ<E6BBBB><CEAA><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD> IString<6E><67>
/// </summary>
/// <param name="oldValue">Ҫ<><EFBFBD><E6BBBB> IString<6E><67></param>
/// <param name="newValue">Ҫ<>滻 oldValue <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƥ<EFBFBD><C6A5><EFBFBD><EFBFBD><EFBFBD><EFBFBD> IString<6E><67></param>
/// <returns><3E><>Ч<EFBFBD>ڴ<EFBFBD>ʵ<EFBFBD><CAB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> oldValue <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʵ<EFBFBD><CAB5><EFBFBD><EFBFBD><EFBFBD>滻Ϊ newValue <20><> IString<6E><67></returns>
/// <remarks>
/// <20>쳣:
/// System.ArgumentException:oldValue <20>ǿ<EFBFBD><C7BF>ַ<EFBFBD><D6B7><EFBFBD> ("")<29><>
/// </remarks>
public IString Replace(IString oldValue, IString newValue)
{
if (Length == 0)
throw new ArgumentException("oldValue<EFBFBD>ǿ<EFBFBD><EFBFBD>ַ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
string str = string.Empty;
int i = 0;
while (i < Length)
{
if (CStr[i] == oldValue[0])
{
int j;
for (j = 1; j < oldValue.Length; j++)
{
if (CStr[i + j] != oldValue[j])
{
break;
}
}
if (j == oldValue.Length)
{
str += newValue;
i += oldValue.Length;
continue;
}
}
str += CStr[i];
i++;
}
return new SeqString(str);
}
/// <summary>
/// <20>Ƴ<EFBFBD><C6B3><EFBFBD><EFBFBD><EFBFBD>ǰ<EFBFBD><C7B0><EFBFBD>հ<EFBFBD><D5B0>ַ<EFBFBD><D6B7><EFBFBD>β<EFBFBD><CEB2><EFBFBD>հ<EFBFBD><D5B0>ַ<EFBFBD><D6B7><EFBFBD>
/// </summary>
/// <returns><3E>ӵ<EFBFBD>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD><EFBFBD>Ŀ<EFBFBD>ʼ<EFBFBD><CABC>ĩβ<C4A9>Ƴ<EFBFBD><C6B3><EFBFBD><EFBFBD>пհ<D0BF><D5B0>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD></returns>
public IString Trim()
{
//<2F><><EFBFBD><EFBFBD><EFBFBD>Ƴ<EFBFBD><C6B3><EFBFBD><EFBFBD><EFBFBD>ǰ<EFBFBD><C7B0><EFBFBD>հ<EFBFBD><D5B0>ַ<EFBFBD><D6B7><EFBFBD>β<EFBFBD><CEB2><EFBFBD>հ<EFBFBD><D5B0>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD>.
int left;
int right;
for (left = 0; left < CStr.Length - 1; left++)
{
if (CStr[left] != ' ')
break;
}
if (left == CStr.Length - 1)
return new SeqString();
for (right = CStr.Length - 2; right >= 0; right--)
{
if (CStr[right] != ' ')
break;
}
return SubString(left, right - left + 1);
}
}
}
```
## 3. <20><>ϰ<EFBFBD>ο<EFBFBD><CEBF><EFBFBD><EFBFBD><EFBFBD>
**1. <20><>Ŀ<EFBFBD><C4BF><EFBFBD><EFBFBD>**
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ`python`<EFBFBD><EFBFBD>ʵ<EFBFBD><EFBFBD>
```
class Solution:
"""
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD>õ<EFBFBD>˼·<CBBC>ǣ<EFBFBD><C7A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
ʲô<CAB2>ǻ<EFBFBD><C7BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڣ<EFBFBD>
<20><>ʵ<EFBFBD><CAB5><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>е<EFBFBD> abcabcbb<62><62><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>У<EFBFBD><D0A3><EFBFBD><EFBFBD>ڣ<EFBFBD>Ϊ abc <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ĿҪ<C4BF><D2AA><EFBFBD><EFBFBD>
<20><><EFBFBD>ٽ<EFBFBD><D9BD><EFBFBD> a<><61><EFBFBD><EFBFBD><EFBFBD>б<EFBFBD><D0B1><EFBFBD><EFBFBD><EFBFBD> abca<63><61><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ԣ<EFBFBD><D4A3><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD>ƶ<EFBFBD><C6B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>У<EFBFBD>
<20><><EFBFBD><EFBFBD><EFBFBD>ƶ<EFBFBD><C6B6><EFBFBD>
<20><><EFBFBD><EFBFBD>ֻҪ<D6BB>Ѷ<EFBFBD><D1B6>е<EFBFBD><D0B5><EFBFBD><EFBFBD>ߵ<EFBFBD>Ԫ<EFBFBD><D4AA><EFBFBD>Ƴ<EFBFBD><C6B3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ˣ<EFBFBD>ֱ<EFBFBD><D6B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ĿҪ<C4BF><D2AA><EFBFBD><EFBFBD>
һֱά<D6B1><CEAC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ķ<EFBFBD><C4B6>У<EFBFBD><D0A3>ҳ<EFBFBD><D2B3><EFBFBD><EFBFBD>г<EFBFBD><D0B3><EFBFBD><EFBFBD><EFBFBD>ij<EFBFBD><C4B3><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
"""
def lengthOfLongestSubstring(self, s: str) -> int:
if not s:
return 0
left = 0 # <20><><EFBFBD>ڵ<EFBFBD><DAB5><EFBFBD><EFBFBD><EFBFBD>
lookup = set() # <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD>ʼΪ<CABC>գ<EFBFBD><D5A3><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD>Ҷ<EFBFBD>Ϊ<EFBFBD><CEAA>
n = len(s) # <20>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD>ܳ<EFBFBD><DCB3><EFBFBD>
max_len = 0 # <20><><EFBFBD>ظ<EFBFBD><D8B8><EFBFBD>Ӵ<EFBFBD><D3B4>ij<EFBFBD><C4B3><EFBFBD>
cur_len = 0 # <20><>ǰ<EFBFBD><C7B0><EFBFBD>ڵij<DAB5><C4B3><EFBFBD>
for i in range(n): # <20><><EFBFBD><EFBFBD><EFBFBD>Ҳ<EFBFBD><D2B2>ƶ<EFBFBD>
cur_len += 1 # <20>ƶ<EFBFBD>һ<EFBFBD>Σ<EFBFBD><CEA3><EFBFBD><EFBFBD>ڳ<EFBFBD><DAB3>ȼ<EFBFBD>һ
# <20><><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD><D0B6><EFBFBD>ʼ
while s[i] in lookup: # s[i]<5D><>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD>ƶ<EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>ڵ<EFBFBD>ֵ
# <20><><EFBFBD><EFBFBD><EFBFBD>Ҳ<EFBFBD><D2B2>¼<EFBFBD><C2BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7>ڴ<EFBFBD><DAB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͬ<EFBFBD><CDAC>ֵ<EFBFBD><D6B5><EFBFBD>򽫴<EFBFBD><F2BDABB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ұ<EFBFBD><D2B1>ƶ<EFBFBD><C6B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ǹö<C7B8><C3B6><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD>ɵļ<C9B5><C4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
lookup.remove(s[left]) # <20>Ƴ<EFBFBD><C6B3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ
left += 1 # <20><><EFBFBD><EFBFBD><EFBFBD>±<EFBFBD><C2B1><EFBFBD>һ
cur_len -= 1 # <20><><EFBFBD>ڳ<EFBFBD><DAB3>ȼ<EFBFBD>һ
# <20><><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD><D0B6><EFBFBD><EFBFBD><EFBFBD>
if cur_len > max_len: # <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǰ<EFBFBD><C7B0><EFBFBD>ڳ<EFBFBD><DAB3>ȴ<EFBFBD><C8B4>ڼ<EFBFBD>¼<EFBFBD><C2BC><EFBFBD><EFBFBD><EFBFBD>󴰿ڳ<F3B4B0BF><DAB3>ȣ<EFBFBD><C8A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>¸<EFBFBD><C2B8><EFBFBD><EFBFBD>󴰿ڳ<F3B4B0BF><DAB3><EFBFBD>
max_len = cur_len
lookup.add(s[i]) # <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD><D0B6><EFBFBD><EFBFBD><EFBFBD>֮<EFBFBD>󣬼<EFBFBD><F3A3ACBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҳ<EFBFBD><D2B2>ƶ<EFBFBD><C6B6>ĸ<EFBFBD><C4B8>²<EFBFBD><C2B2><EFBFBD>
return max_len
if __name__ == '__main__':
solution = Solution()
max_length = solution.lengthOfLongestSubstring("abcddsd")
print(max_length)
```
**2. <20><>Ŀ<EFBFBD><C4BF><EFBFBD><EFBFBD>**
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ`python`<EFBFBD><EFBFBD>ʵ<EFBFBD><EFBFBD>
```python
class Solution:
def findSubstring(self, s, words):
from collections import Counter
if not s or not words:
return []
one_word = len(words[0])
all_len = len(words) * one_word # words<64><73><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD>ɵ<EFBFBD><C9B5>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
n = len(s)
words = Counter(words)
res = []
for i in range(0, n - all_len + 1): # <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڣ<EFBFBD><DAA3><EFBFBD><EFBFBD><EFBFBD><E0B4B0><EFBFBD>и<EFBFBD><D0B8><EFBFBD><EFBFBD><EFBFBD>
tmp = s[i:i + all_len] # <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD> i+all_len<65><6E><EFBFBD>Ǵ<EFBFBD><C7B4><EFBFBD><EFBFBD>Ҳ<EFBFBD>
# <20><><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>
c_tmp = []
for j in range(0, all_len, one_word):
c_tmp.append(tmp[j:j + one_word])
if Counter(c_tmp) == words:
# <20>ж<EFBFBD>ͨ<EFBFBD><CDA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD>±<EFBFBD>
res.append(i)
return res
if __name__ == '__main__':
solution = Solution()
s = "barfoothefoobarman"
words = ["foo", "bar"]
out = solution.findSubstring(s, words)
print(out)
```
**3. <20><EFBFBD>Ӵ<EFBFBD><D3B4>õ<EFBFBD>ƽ<EFBFBD><C6BD><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD>**
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ`python`<EFBFBD><EFBFBD>ʵ<EFBFBD><EFBFBD>
```python
class Solution(object):
def balancedString(self, s):
"""
python<6F>
:type s: str
:rtype: int
"""
cnt = collections.Counter(s)
res = n = len(s)
i, avg = 0, n//4
for j, c in enumerate(s):
cnt[c] -= 1
while i < n and all(avg >= cnt[x] for x in 'QWER'):
res = min(res, j - i + 1)
cnt[s[i]] += 1
i += 1
return res
```