数据结构 THU2018 - 绪论

迭代与递归

1. 减而治之

在这里插入图片描述
例. 数组翻转
在这里插入图片描述

迭代方法:

void Reverse(int *A, int low, int high){
    while(low < high){
        int tmp = A[low];
        A[low] = A[high];
        A[high] = tmp;
        low++;
        high--;
    }
}

递归方法:

void Reverse(int *A, int low, int high){
    if(low >= high)
        return;
    int tmp = A[low];
    A[low] = A[high];
    A[high] = tmp;
    low++;
    high--;
    Reverse(A, low, high);
}
2. 分而治之

例1. 总和最大区段

给定任何一个序列 A[0,n), 找出其总和最大区段,如果有多个取最小的那个。

在这里插入图片描述
每个数组的“总和最大区段”无非有三种情况:

  • 全部落在 [low, middle]
  • 全部落在 [middle+1, high]
  • 一半落在 [low, middle], 一半落在 [middle+1 , high]
int greatest_sum (int *A, int low, int high){ ///left closed and right closed
   /// 终止条件 
    if(low == high)
        return A[low];
    if(low > high)
        return 0;
     分治 /
    int middle = (low + high) / 2;
     左边的最大区段 
    int greatest_left = 0,sum = 0;
    for(int pointer_i = middle; pointer_i >= low; pointer_i--){
        sum += A[pointer_i];
        if(sum > greatest_left)
            greatest_left = sum;
    }
     右边的最大区段 
    int greatest_right = 0, sum_right = 0;
    for(int pointer_i = middle+1; pointer_i <= high; pointer_i++){
        sum_right += A[pointer_i];
        if(sum_right > greatest_right)
            greatest_right = sum_right;
    }
     递归:三者取最大 
    return max(max(greatest_left+greatest_right, greatest_sum(A, middle+1, high)),greatest_sum(A,low,middle));
}

例2. 最长公共子序列

在这里插入图片描述
分析:
在这里插入图片描述
在这里插入图片描述

int lCS(string A, string B, int n, int m){
    if(n == -1 or m == -1)
        return 0;
    if (A[n] == B[m]){
        return 1+lCS(A, B, n-1, m-1);
    }
    if(A[n]!=B[m]){
        return max(lCS(A,B,n-1,m),lCS(A,B,n,m-1));
    }
}

采用记忆法,来重复利用已经计算过的值,节省运算时间:

int ** dp;
int lCS(string A, string B, int n, int m){
    if(n <= 0  or m <= 0)
        return 0;
    if (A[n] == B[m]){
        if(dp[n-1][m-1]!=-100){ // already calculated
            return 1 + dp[n-1][m-1];
        }
        else { // not calculated
            dp[n-1][m-1] = lCS(A, B, n - 1, m - 1);
            return 1 + dp[n-1][m-1];
        }
    }
    if(A[n]!=B[m]){
        if(dp[n-1][m]==-100) //not in matrix
            dp[n-1][m] = lCS(A,B,n-1,m);
        if(dp[n][m-1]==-100)
            dp[n][m-1] = lCS(A,B,n,m-1);
        return max(dp[n-1][m],dp[n][m-1]);
    }
}

int main() {
    string a = "-educational";
    string b = "-advantage";
    int n = a.length()-1;
    int m = b.length()-1;
    dp = new int*[n];
    for(int i=0;i<=n;i++){
        dp[i] = new int [m];
    }
    for (int i = 0; i <= n; i++) {
        for (int j = 0; j <= m; j++){
            dp[i][j] = -100;
        }
    }
    cout<<lCS(a,b,n,m);

    for (int i = 0; i <= n; i++) {
        for (int j = 0; j <= m; j++){
            cout<<dp[i][j]<<" ";
        }
        cout<<endl;
    }
}

在这里插入图片描述

<think>好的,我需要帮助用户找到关于THU-EP数据集的相关信息和下载链接。首先,我需要确认这个数据集的具体情况。用户提到的THU-EP可能与清华大学相关的数据集,但根据现有的引用资料,用户提供的引用中没有直接提到THU-EP。引用[2]提到了THU数据结构课程,引用[3]提到了THUCNews数据集的处理方法。因此,THU-EP可能是一个不同的数据集,或者用户可能有拼写错误。 接下来,我应该考虑用户可能的需求。用户可能是在寻找某个特定的清华大学发布的数据集,例如THUCNews或者类似的项目。根据引用[3],THUCNews数据集的处理方法包括文本切分和划分训练集、验证集、测试集,这可能与自然语言处理有关。因此,THU-EP可能属于类似的领域,但名称可能有误。 我需要建议用户核实名称的正确性,并查看清华大学相关实验室或项目的官方网站。例如,自然语言处理与社会人文计算实验室可能发布过类似的数据集。此外,GitHub、GitLab等开源平台上也可能有相关资源。如果用户无法找到,建议直接联系清华大学的实验室或通过学术论坛寻求帮助。 同时,用户提到的引用[1]关于BeautifulSoup的使用可能与数据爬取相关,但不确定是否与THU-EP有关。需要确保回答中提供的方法全面,包括核实名称、访问官网、开源平台和联系相关机构等步骤。最后,生成的相关问题需要围绕数据集查找的常见问题展开,比如其他清华数据集、名称纠错、访问权限等。</think>关于THU-EP数据集的信息获取路径建议如下: 1. **名称核实与拓展查询** 该名称可能与清华大学电子工程系(Tsinghua University Department of Electronic Engineering)相关,建议尝试组合搜索关键词: - `THU-EP dataset` + `清华大学电子工程系数据集` - `THU-EP` + `计算机视觉/自然语言处理`(根据应用领域补充) 2. **访问清华大学实验室官网** 清华大学多个实验室会发布科研数据集,例如: - 智能技术与系统国家重点实验室(http://www.csai.tsinghua.edu.cn/) - 自然语言处理与社会人文计算实验室(http://nlp.csai.tsinghua.edu.cn/) 在官网的"资源下载"或"科研项目"板块中查找[^3] 3. **开源平台检索** 在GitHub/GitLab使用高级搜索指令: ```python # 示例代码:使用GitHub API查询含THU-EP关键词的仓库 import requests response = requests.get("https://api.github.com/search/repositories?q=THU-EP+dataset") print(response.json()) ``` 4. **学术论文溯源** 通过Google Scholar检索引用该数据集的论文,例如: $$ \text{搜索式:"THU-EP dataset" OR "THU-EP benchmark"} $$
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值