题目: 算法描述: 1 #include <iostream>2usingnamespace std;3 4int main() {5int n;6 cin >> n;7int a[n][n];8int m[n][n];9for(int i = 0; i < n; i++) {
10for(int j = 0; j <= i; j++) {
11 cin >> a[i][j];
12 }
13 }
14for(int j = 0; j < n; j++) {
15 m[n-1][j] = a[n-1][j];
16 }
17for(int i = n - 2; i >= 0; i--){
18for(int j = 0; j <= i; j++) {
19if(m[i+1][j]>m[i+...
一、实践题目:删数问题二、问题描述: 给定一个n位的正整数a,去掉其中任意k(k≤n) 个数字后,剩下的数字按照原次序排列成一个的新的正整数。在给定的n位正整数a和正整数k的情况下,输出完成该操作后剩下的正整数。三、算法描述: 正整数的位数不定,用long long去存不一定存的下,所以用一个字符数组str[]来存储。此处运用一种贪心策略,不停的对这个整数进行扫描,当发现当前位的后一位比当前位小的情况,将当前位...
一、实践题目最大子段和二、问题描述给定n个整数(可能为负数)组成的序列a[1],a[2],a[3],…,a[n],求该序列如a[i]+a[i+1]+…+a[j]的子段和的最大值。当所给的整数均为负数时,定义子段和为0。要求算法的时间复杂度为O(n)。三、算法描述定义MaxSum函数记录字段和的最大值;首先判断下一个数是否列入当前子段:如果当前子段加上下一个数大于0,列入当前子段;如果下一个数加上当前子段小于0,舍弃当前子段;将下一个数作为新子段的开...
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
输出样例:在这里给出相应的输出。例...
一、实践题目程序存储问题二、问题描述设有n 个程序{1,2,…, n }要存放在长度为L的磁带上。程序i存放在磁带上的长度是 li,1≤i≤n。 程序存储问题要求确定这n 个程序在磁带上的一个存储方案, 使得能够在磁带上存储尽可能多的程序。 对于给定的n个程序存放在磁带上的长度,计算磁带上最多可以存储的程序数。输入格式:第一行是2 个正整数,分别表示文件个数n和磁带的长度L。接下来的1行中,有n个正整数,表示程序存放在磁带上的长度...
一、实践题目 工作分配问题 二、问题描述 设有n件工作分配给n个人。将工作i分配给第j个人所需的费用为cij 。 设计一个算法,对于给定的工作费用,为每一个人都分配1 件不同的工作,并使总费用达到最小。 输入格式:输入数据的第一行有1 个正整数n (1≤n≤20)。接下来的n行,每行n个数,表示工作费用。 输出格式:将计算出的最小总费用输出到屏幕。 三、算法描述 问题的解空间如下: 剪枝方法:我们将当前最优解记...
TF-IDF是一种统计方法,这个算法在我们项目提取关键词的模块需要被用到,TF-IDF算法是用来估计一个词汇对于一个文件集中一份文件的重要程度。从算法的定义中就可以看到,这个算法的有效实现是依靠一定数据量的文件集作为基础的。字词的重要性随着他在文件中出现的次数呈正比例的关系增加,这一点很符合常识,就是这个词出现的次数越多,那个这个词越重要,词的出现频度和他的重要程度之间呈现正关系。为了抑制冠词等经常出现的无用...
1.实践题目名称: 找第k小的数2.问题描述: 设计一个平均时间为O(n)的算法,在n(1<=n<=1000)个无序的整数中找出第k小的数。3.算法描述: 定义一个分割函数,实现返回指定数组中的数在数组中是第k大的数值k,若该k值与题目所需不符,则传入另一查找函数,在该查找函数中实现在数组的[0,k)或(k,n]段中查找符合要求的k值。函数具体实现如下://分割函数//选取数组中的第一个数作为基数,将数组分成两部分 int partition(int a[],in...
一、实践题目改写二分搜索算法二、问题描述设a[0:n-1]是已排好序的数组,请改写二分搜索算法,使得当x不在数组中时,返回小于x的最大元素位置i和大于x的最小元素位置j。当搜索元素在数组中时,i和j相同,均为x在数组中的位置。三、算法描述依然采用了二分搜索算法的大部分代码,然后进行了简单修改。当x不在数组中时分为三种情况,需要对这三种情况进行一一实现。#include <iostream>using namespace std;int main(){ int n,x; cin...
题目:二分查找输入n值(1<=n<=1000)、n个非降序排列的整数以及要查找的数x,使用二分查找算法查找x,输出x所在的下标(0~n-1)及比较次数。若x不存在,输出-1和比较次数。感想:其实这道题很简单的,只需要给二分查找的比较算法中添加一个简单的计数器就可以了,但要注意这个计数器必须放在二分查找左右比较的遍历代码中的第一行,才能完成正确的比较。但是由于函数只能return 一个数值,而原始的二分查找函数是用来返回下标的,一...
1. 实践题目 7-1数字三角形 给定一个由 n行数字组成的数字三角如下图所示。试设计一个算法,计算出从三角形 的顶至底的一条路径(每一步可沿左斜线向下或右斜线向下),使该路径经过的数字总和最大。 7 3 8 8 1 0 2 7 4 4 4 5 2 6 5输出 30 2. 问题描述 使用初始值-1的二位数组记录每个子问题的最大值,进而得到最大数字总和路径 3. 算法描述 递归方程: maxSum[i]...
本文索引目录:一、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 算法时间及空间复杂度分析...
1、实践题目:最大子段和2,问题描述: 给定n个整数(可能为负数)组成的序列a[1],a[2],a[3],…,a[n],求该序列如a[i]+a[i+1]+…+a[j]的子段和的最大值。当所给的整数均为负数时,定义子段和为0。要求算法的时间复杂度为O(n)。3、算法描述:定义两个数组a,b,a表示要输入的序列,b表示序列的子段和(比如b[3]表示a[1],a[2],a[3]的最大子段和),然后进行判断,如果前面的最大子段和大于0,则加上改最大子段和,若前面的最大子段和小于...
1.实践题目7-1 数字三角形 (30 分) 给定一个由 n行数字组成的数字三角形如下图所示。试设计一个算法,计算出从三角形 的顶至底的一条路径(每一步可沿左斜线向下或右斜线向下),使该路径经过的数字总和最大。输入格式:输入有n+1行:第 1 行是数字三角形的行数 n,1<=n<=100。接下来 n行是数字三角形各行中的数字。所有数字在0..99 之间。输出格式:输出最大路径的值。输入样例:在这里给出一组输入。例如:5
7
3 8
8 1 0
2 7 4 4
...
1、实践题目:改写二分搜索算法2、问题描述:设a[0:n-1]是已排好序的数组,请改写二分搜索算法,使得当x不在数组中时,返回小于x的最大元素位置i和大于x的最小元素位置j。当搜索元素在数组中时,i和j相同,均为x在数组中的位置。输入格式:输入有两行:第一行是n值和x值; 第二行是n个不相同的整数组成的非降序序列,每个整数之间以空格分隔。输出格式:输出小于x的最大元素的最大下标i和大于x的最小元素的最小下标j。当搜索元素在数...