第五章上机实践报告

1.实践问题:

工作分配问题

2.问题描述:

设有n件工作分配给n个人。将工作i分配给第j个人所需的费用为cij 。 设计一个算法,对于给定的工作费用,为每一个人都分配1 件不同的工作,并使总费用达到最小。

3.算法描述:

1)解空间:排列树

2)测试样例的解空间树:

3)剪枝方法:

void Backtrack(int t){
    for(int k=1;k<=n;++k){
        if(!b[k]){
            b[k]=1;
            sum+=p[k][t];
            if(t==n){
                if(sum<best)
                best=sum;
            }
            else if (sum<best)
            Backtrack(t+1);
            sum-=p[k][t];
            b[k]=0;
        }
    }
}

4.心得体会:

和同伴想了好久才想出一个标记防止重复选择,回溯法的应用还不够熟练,怕剪枝方法遗漏导致算法运行时间过久。

原文地址:https://www.cnblogs.com/yelimin/p/10146072.html

时间: 2024-11-05 15:48:44

第五章上机实践报告的相关文章

算法第五章上机实践报告

一 . 实践题目 7-2 工作分配问题 二 . 问题描述 设有n件工作分配给n个人.将工作i分配给第j个人所需的费用为cij . 设计一个算法,对于给定的工作费用,为每一个人都分配1 件不同的工作,并使总费用达到最小. 输入格式: 输入数据的第一行有1 个正整数n (1≤n≤20).接下来的n行,每行n个数,表示工作费用. 输出格式: 将计算出的最小总费用输出到屏幕. 输入样例: 3 10 2 3 2 3 4 3 4 5 输出样例: 9 三 . 算法描述 1. 解空间 第一个人选择第几个工作,第

揭露动态规划真面目——算法第三章上机实践报告

算法第三章上机实践报告 一.        实践题目 7-2 最大子段和 (40 分) 给定n个整数(可能为负数)组成的序列a[1],a[2],a[3],…,a[n],求该序列如a[i]+a[i+1]+…+a[j]的子段和的最大值.当所给的整数均为负数时,定义子段和为0. 要求算法的时间复杂度为O(n). 输入格式: 输入有两行: 第一行是n值(1<=n<=10000): 第二行是n个整数. 输出格式: 输出最大子段和. 输入样例: 在这里给出一组输入.例如: 6 -2 11 -4 13 -5

09.19算法第二章上机实践报告

算法第二章上机实践报告 https://edu.cnblogs.com/campus/gdwywm/se1803/homework/7608 1.实践题目 7-3 两个有序序列的中位数 https://pintia.cn/problem-sets/1173827583729741824/problems/1173827629514764290 2.问题描述 已知有两个等长的非降序序列S1, S2, 设计函数求S1与S2并集的中位数.有序序列A ?0 ?? ,A ?1 ?? ,?,A ?N−1 ?

贪心算法?我全都要!——算法第四章上机实践报告

算法第四章上机实践报告 一.        实践题目 4-1 程序存储问题 (90 分) 设有n 个程序{1,2,…, n }要存放在长度为L的磁带上.程序i存放在磁带上的长度是 li,1≤i≤n. 程序存储问题要求确定这n 个程序在磁带上的一个存储方案, 使得能够在磁带上存储尽可能多的程序. 对于给定的n个程序存放在磁带上的长度,计算磁带上最多可以存储的程序数. 输入格式: 第一行是2 个正整数,分别表示文件个数n和磁带的长度L.接下来的1行中,有n个正整数,表示程序存放在磁带上的长度. 输出

第二章上机实践报告

实践报告任选一题进行分析.内容包括: 实践题目: 7-1 二分查找 (20 分) 输入n值(1<=n<=1000).n个非降序排列的整数以及要查找的数x,使用二分查找算法查找x,输出x所在的下标(0~n-1)及比较次数.若x不存在,输出-1和比较次数. 输入格式: 输入共三行: 第一行是n值: 第二行是n个整数: 第三行是x值. 输出格式: 输出x所在的下标(0~n-1)及比较次数.若x不存在,输出-1和比较次数. 问题描述:问题是让我们设计一个二分查找,在已经输入的数组里找到我们输入的数字,

第5章上机实践报告

1.实践题目 工作分配问题 2.问题描述 设有n件工作分配给n个人.将工作i分配给第j个人所需的费用为cij . 设计一个算法,对于给定的工作费用,为每一个人都分配1 件不同的工作,并使总费用达到最小. 输入格式:输入数据的第一行有1 个正整数n (1≤n≤20).接下来的n行,每行n个数,表示工作费用. 输出格式:将计算出的最小总费用输出到屏幕. 输入样例:3 10 2 3 2 3 4 3 4 5 输出样例:9 3.算法描述(包括解空间,画出测试样例的解空间树,剪枝(约束函数或限界函数)方法描

第五章上机实验报告

1.     实践题目及问题描述 工作分配问题:n件工作分配给n个人,为每一个人都分配1 件不同的工作,工作i分配给第j个人所需的费用为cij,设计一个算法,使总费用最小. 2.     算法描述 (1)     解空间 {<x11,x12-x1n>,<x21,x22-x2n>--<xn1,xn2-xnn>} 其中 <x11,x12-x1n>!=<x21,x22-x2n>!=-!= <xn1,xn2-xnn> (2)     解空间树

『嗨威说』算法设计与分析 - PTA 数字三角形 / 最大子段和 / 编辑距离问题(第三章上机实践报告)

本文索引目录: 一.PTA实验报告题1 : 数字三角形 1.1 实践题目 1.2 问题描述 1.3 算法描述 1.4 算法时间及空间复杂度分析 二.PTA实验报告题2 : 最大子段和 2.1 实践题目 2.2 问题描述 2.3 算法描述 2.4 算法时间及空间复杂度分析 三.PTA实验报告题3 : 编辑距离问题 3.1 实践题目 3.2 问题描述 3.3 算法描述 3.4 算法时间及空间复杂度分析 四.实验心得体会(实践收获及疑惑) 一.PTA实验报告题1 : 数字三角形 1.1 实践题目: 1

第四章上机实践报告

一:实践题目: 删数问题 (110 分) 给定n位正整数a,去掉其中任意k≤n 个数字后,剩下的数字按原次序排列组成一个新 的正整数.对于给定的n位正整数a和正整数 k,设计一个算法找出剩下数字组成的新数最 小的删数方案. 输入格式: 第 1 行是1 个正整数 a.第 2 行是正整数k. 输出格式: 输出最小数. 输入样例: 在这里给出一组输入.例如: 178543 4 输出样例: 在这里给出相应的输出.例如: 13 二:问题描述: 使用贪心算法的思想每次选择从头开始递增的数字中最大的数字 即一