![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
SDUTOJ刷题
MokylinJay
Hello World!
展开
-
SDUTOJ 1018 - 骨牌铺方格
#include<bits/stdc++.h>using namespace std;// 类似斐波那契数列// a1 = 1, a2 = 2// a[i] = a[i-1] + a[i-2]int main(){ long long a[60] = {0}; a[1] = 1; a[2] = 2; for (int i = 3; i <= 50; i++){ a[i] = a[i-1] + a[i-2]; }原创 2021-11-26 15:52:02 · 203 阅读 · 0 评论 -
SDUTOJ 3664 - 顺序表应用7:最大子段和之分治递归法
#include<bits/stdc++.h>using namespace std;int a[50010] = {0};int count_num = 0; // 记录递归次数int sum = 0;int maxSub(int l, int r){ count_num++; // 统计递归次数 if (l == r){ // 递归出口 if (a[l] > 0){ sum = a[l]; }原创 2021-11-26 15:34:43 · 192 阅读 · 0 评论 -
SDUTOJ 整数变换问题
#include<bits/stdc++.h>using namespace std;#define maxn 105// n初始给定的数// m为目标值// minval最小操作步数// res数组,记录每一步操作int m, n, minval;char res[maxn];int dfs(int step, int num){ // 如果当前操作步数,大于最少操作步数 // 则该操作序列不可能为最少操作序列 // 剪枝 if (st原创 2021-11-29 15:11:53 · 594 阅读 · 0 评论 -
SDUT 1776 - 工作分配问题
#include<bits/stdc++.h>using namespace std;#define maxn 25int inf = 0x3f3f3f3f;// s数组记录工人和工作搭配的花费// visited数组记录工人是否已分配工作// sum记录当前累加的费用// n为输入数据大小// minval为最小费用int s[maxn][maxn], visited[maxn], sum, n, minval;void dfs(int i){ // 分配原创 2021-11-29 14:53:06 · 122 阅读 · 0 评论 -
SDUTOJ 1767 - 运动员匹配问题
#include<bits/stdc++.h>using namespace std;#define maxn 25// n输入的数据大小// maxval寻找最大竞争优势// sum累加当前竞赛优势int n, maxval, sum;// p为男方搭配优势// q为女方搭配优势// f标记当前女方队员是否已经搭配// res记录两个远动员搭配时的竞赛优势int p[maxn][maxn], q[maxn][maxn], visited[maxn], res[max原创 2021-11-29 14:39:56 · 193 阅读 · 0 评论 -
SDUTOJ 1764 - 子集和问题
#include<bits/stdc++.h>using namespace std;int a[10005]; // 存放集合s的数据int n, c, sum;int flag = 0; // 有解时flag=1int ans[10005] = {0};// 递归求解// 从pos处向后查找,sum记录此时的加和,top作为ans数组的游标void getRes(int pos, int sum, int top){ // 相加和大于c时,无解 // f原创 2021-11-28 22:56:38 · 243 阅读 · 0 评论 -
SDUTOJ 1751 - 区间覆盖问题
#include<bits/stdc++.h>using namespace std;int main(){ int a[10005]; // n个点,固定区间长度为k,count_num记录所用区间数 int n, k, count_num; while(cin>>n>>k){ for (int i = 0; i < n; i++){ cin>>a[i];原创 2021-11-28 16:43:21 · 152 阅读 · 0 评论 -
SDUTOJ 1743 - 最优合并问题
#include<bits/stdc++.h>using namespace std;bool cmp(int a, int b){ return a>b;}int main(){ int k; int a[1010], b[1010]; int minval = 0, maxval = 0; cin>>k; for (int i = 0; i < k; i++){ cin>>a[原创 2021-11-28 16:28:04 · 294 阅读 · 0 评论 -
SDUTOJ 1298 - 活动选择
#include<bits/stdc++.h>using namespace std;struct Active{ int start; // 活动开始时间 int finish; // 活动结束时间 int num; // 活动编号,从1开始}actives[110];int main(){ int n; cin>>n; for (int i = 0; i < n; i++){ cin>&g原创 2021-11-28 16:05:01 · 512 阅读 · 0 评论 -
SDUTOJ 2052 - 装船问题
#include<bits/stdc++.h>using namespace std;struct good{ int w; // 重量 int p; // 价值 int val; // 价值与重量之比}goods[15], tmp;// 冒泡排序,将货物按val值从大到小排列void my_sort(){ for (int i = 0; i < 9; i++){ for (int j = 0; j < 9-i; j+原创 2021-11-28 15:43:15 · 150 阅读 · 0 评论 -
SDUTOJ 1760 - 多元Huffman编码问题
#include<bits/stdc++.h>using namespace std;int main(){ int n, k, x; priority_queue<int, vector<int>, greater<int>> q1; // 从小到大排列的优先级队列 priority_queue<int> q2; // 从从大到小排列的优先级队列 cin>>n>>k; fo原创 2021-11-28 15:16:55 · 398 阅读 · 0 评论 -
SDUTOJ 1750 - 汽车加油问题
#include<bits/stdc++.h>using namespace std;int main(){ int n, k, dist[1005]; cin>>n>>k; int temp = n; int count_num = 0; // dist数组记录从上一站到第i站的距离 for (int i = 1; i <= k+1; i++){ cin>>dist[i];原创 2021-11-28 14:59:10 · 328 阅读 · 0 评论 -
SDUTOJ 2080 - 最长公共子序列问题
#include<bits/stdc++.h>using namespace std;int main(){ char s1[501], s2[501]; while (cin>>s1>>s2){ int n = strlen(s1); int m = strlen(s2); // dp[i][j]表示长度为i和长度为j时,两个序列的最长公共子序列长度 int dp[n+1][m+1]原创 2021-11-27 16:24:04 · 125 阅读 · 0 评论 -
SDUTOJ 1729 - 石子合并问题
#include<bits/stdc++.h>using namespace std;#define inf 0x3f3f3f3fint main(){ int n, k, a[202]; int dp_max[202][202], dp_min[202][202]; cin>>n; memset(dp_max, 0, sizeof(dp_max)); memset(dp_min, 0, sizeof(dp_min)); f原创 2021-11-27 15:54:13 · 193 阅读 · 0 评论 -
SDUTOJ 1730 - 数字三角形问题
#include<bits/stdc++.h>using namespace std;int main(){ // dp[i][j]存储当前位置到底部的最大和 int n, dp[101][101], a[101][101]; cin>>n; for (int i = 1; i <= n; i++){ for (int j = 1; j <= i; j++){ cin>>a[i][原创 2021-11-27 15:27:45 · 211 阅读 · 0 评论 -
SDUTOJ 1725 - 最少硬币问题
#include<bits/stdc++.h>using namespace std;#define INF 9999struct Coins{ int val; int count_num;}coins[15];int main(){ // dp[i]记录找i元所用最少的硬币量 int n, dp[20100], m; cin>>n; for (int i = 1; i <= n; i++){原创 2021-11-27 15:04:34 · 309 阅读 · 0 评论 -
SDUTOJ 3358 - 高数Umaru系列(9)——哈士奇
#include<bits/stdc++.h>using namespace std;int main(){ // n为狗数,x为钱数,p为每只狗的价格,m为每只狗的萌值 int n, x, p, m; while(cin>>n>>x){ int dp[110][1010] = {0}; // 当第i条狗被考虑在内时的最优解 for (int i = 1; i <= n; i++){原创 2021-11-27 14:34:26 · 148 阅读 · 0 评论 -
SDUTOJ 1722 - 整数因子分解问题
#include<bits/stdc++.h>using namespace std;// 数组a[i]记录i有多少种分解方式int a[500000];// 求解x有多少种分解方式long long func(int x){ // 默认一种,即x = x long long sum = 1; // 若x在50万以内,且已统计完分解方式,则直接返回 if ((x<500000) && a[x] != 0){ r原创 2021-11-26 16:23:53 · 142 阅读 · 0 评论 -
SDUTOJ 1710 - 众数问题
#include<bits/stdc++.h>using namespace std;// 定义mode记录众数值,mul记录众数重数int mode = 0, mul = 0, n;// 该函数递归维护众数mode及重数mulvoid mode_func(int a[], int l, int r){ int mid = (l+r)/2; int count_num = 1; // 默认a[mid]的重数为1 int i, j; // 向左侧统计原创 2021-11-26 14:46:51 · 342 阅读 · 0 评论 -
SDUTOJ 3404 - 数据结构实验之排序七:选课名单
Problem Description随着学校规模的扩大,学生人数急剧增加,选课名单的输出也成为一个繁重的任务,我校目前有在校生3万多名,两千多门课程,请根据给定的学生选课清单输出每门课的选课学生名单。Input输入第一行给出两个正整数N( N ≤ 35000)和M(M ≤ 2000),其中N是全校学生总数,M是课程总数,随后给出N行,每行包括学生姓名拼音+学号后两位(字符串总长度小于10)...原创 2019-12-16 21:31:09 · 218 阅读 · 0 评论 -
SDUTOJ 3403 - 数据结构实验之排序六:希尔排序
Problem Description我们已经学习了各种排序方法,知道在不同的情况下要选择不同的排序算法,以期达到最好的排序效率;对于待排序数据来说,若数据基本有序且记录较少时, 直接插入排序的效率是非常好的,希尔排序就是针对一组基本有序的少量数据记录进行排序的高效算法。你的任务是对于给定的数据进行希尔排序,其中增量dk=n/(2^k)(k=1,2,3……)Input连续输入多组数据,每组输...原创 2019-12-16 19:50:09 · 133 阅读 · 0 评论 -
SDUTOJ 3402 - 数据结构实验之排序五:归并求逆序数
Problem Description对于数列a1,a2,a3…中的任意两个数ai,aj (i < j),如果ai > aj,那么我们就说这两个数构成了一个逆序对;在一个数列中逆序对的总数称之为逆序数,如数列 1 6 3 7 2 4 9中,(6,4)是一个逆序对,同样还有(3,2),(7,4),(6,2),(6,3)等等,你的任务是对给定的数列求出数列的逆序数。Input输入数据...原创 2019-12-16 19:29:17 · 150 阅读 · 0 评论 -
SDUTOJ 3401 - 数据结构实验之排序四:寻找大富翁
Problem Description2015胡润全球财富榜调查显示,个人资产在1000万以上的高净值人群达到200万人,假设给出N个人的个人资产值,请你快速找出排前M位的大富翁。Input首先输入两个正整数N( N ≤ 10^6)和M(M ≤ 10),其中N为总人数,M为需要找出的大富翁数目,接下来给出N个人的个人资产,以万元为单位,个人资产数字为正整数,数字间以空格分隔。Output...原创 2019-12-16 16:47:47 · 115 阅读 · 0 评论 -
SDUTOJ 3400 - 数据结构实验之排序三:bucket sort
Problem Description根据人口普查结果,知道目前淄博市大约500万人口,你的任务是帮助人口普查办公室按年龄递增的顺序输出每个年龄有多少人,其中不满1周岁的按0岁计算,1到2周岁的按1岁计算,依次类推,大于等于100岁的老人全部按100岁计算。Input输入第一行给出一个正整数N(<=5000000),随后连续给出N个整数表示每个人的年龄,数字间以空格分隔。Output...原创 2019-12-03 20:30:27 · 87 阅读 · 0 评论 -
SDUTOJ 3399 - 数据结构实验之排序二:交换排序
Problem Description冒泡排序和快速排序都是基于"交换"进行的排序方法,你的任务是对题目给定的N个(长整型范围内的)整数从小到大排序,输出用冒泡和快排对这N个数排序分别需要进行的数据交换次数。Input连续多组输入数据,每组数据第一行给出正整数N(N ≤ 10^5),随后给出N个整数,数字间以空格分隔。Output输出数据占一行,代表冒泡排序和快速排序进行排序分别需要的交...原创 2019-12-03 20:18:18 · 98 阅读 · 0 评论 -
SDUTOJ 3398 - 数据结构实验之排序一:一趟快排
Problem Description给定N个长整型范围内的整数,要求输出以给定数据中第一个数为枢轴进行一趟快速排序之后的结果。Input连续输入多组数据,每组输入数据第一行给出正整数N(N < = 10^5),随后给出N个长整型范围内的整数,数字间以空格分隔。Output输出一趟快速排序后的结果,数字间以一个空格间隔,行末不得有多余空格。Sample Input849 38...原创 2019-12-03 19:56:17 · 215 阅读 · 0 评论 -
SDUTOJ 3379 - 数据结构实验之查找七:线性之哈希表
Problem Description根据给定的一系列整数关键字和素数p,用除留余数法定义hash函数H(Key)=Key%p,将关键字映射到长度为p的哈希表中,用线性探测法解决冲突。重复关键字放在hash表中的同一位置。Input连续输入多组数据,每组输入数据第一行为两个正整数N(N <= 1500)和p(p >= N的最小素数),N是关键字总数,p是hash表长度,第2行给出...原创 2019-12-03 18:31:13 · 143 阅读 · 0 评论 -
SDUTOJ 3377 - 数据结构实验之查找五:平方之哈希表
Problem Description给定的一组无重复数据的正整数,根据给定的哈希函数建立其对应hash表,哈希函数是H(Key)=Key%P,P是哈希表表长,P是素数,处理冲突的方法采用平方探测方法,增量di=±i^2,i=1,2,3,…,m-1Input输入包含多组测试数据,到 EOF 结束。每组数据的第1行给出两个正整数N(N <= 500)和P(P >= 2N的最小素数...原创 2019-12-03 18:19:58 · 100 阅读 · 0 评论 -
SDUTOJ 3378 - 数据结构实验之查找六:顺序查找
Problem Description在一个给定的无序序列里,查找与给定关键字相同的元素,若存在则输出找到的元素在序列中的位序和需要进行的比较次数,不存在则输出"No",序列位序从1到n,要求查找从最后一个元素开始,序列中无重复元素。Input连续多组数据输入,每组输入数据第一行首先输入两个整数 n (n <= 10^6) 和 k (1 <= k <= 10^7),n是数组...原创 2019-12-02 21:37:18 · 105 阅读 · 0 评论 -
SDUTOJ 3376 - 数据结构实验之查找四:二分查找
Problem Description在一个给定的无重复元素的递增序列里,查找与给定关键字相同的元素,若存在则输出找到的位置,不存在输出-1。Input一组输入数据,输入数据第一行首先输入两个正整数n ( n < = 10^6 )和m ( m < = 10^4 ),n是数组中数据元素个数,随后连续输入n个正整数,输入的数据保证数列递增。随后m行输入m个待查找的关键字keyOu...原创 2019-12-02 21:19:25 · 151 阅读 · 0 评论 -
SDUTOJ 3375 - 数据结构实验之查找三:树的种类统计
Problem Description随着卫星成像技术的应用,自然资源研究机构可以识别每一个棵树的种类。请编写程序帮助研究人员统计每种树的数量,计算每种树占总数的百分比。Input输入一组测试数据。数据的第1行给出一个正整数N (n <= 100000),N表示树的数量;随后N行,每行给出卫星观测到的一棵树的种类名称,树的名称是一个不超过20个字符的字符串,字符串由英文字母和空格组成,...原创 2019-12-02 20:48:06 · 195 阅读 · 0 评论 -
SDUTOJ 3374 - 数据结构实验之查找二:平衡二叉树
Problem Description根据给定的输入序列建立一棵平衡二叉树,求出建立的平衡二叉树的树根。Input输入一组测试数据。数据的第1行给出一个正整数N(n <= 20),N表示输入序列的元素个数;第2行给出N个正整数,按数据给定顺序建立平衡二叉树。Output输出平衡二叉树的树根。Sample Input588 70 61 96 120Sample Output...原创 2019-12-02 20:17:16 · 146 阅读 · 0 评论 -
SDUTOJ 3363 - 数据结构实验之图论七:驴友计划
Problem Description做为一个资深驴友,小新有一张珍藏的自驾游线路图,图上详细的标注了全国各个城市之间的高速公路距离和公路收费情况,现在请你编写一个程序,找出一条出发地到目的地之间的最短路径,如果有多条路径最短,则输出过路费最少的一条路径。Input连续T组数据输入,每组输入数据的第一行给出四个正整数N,M,s,d,其中N(2 <= N <= 500)是城市数目,...原创 2019-11-28 16:08:30 · 98 阅读 · 0 评论 -
SDUTOJ 3373 - 数据结构实验之查找一:二叉排序树
Problem Description对应给定的一个序列可以唯一确定一棵二叉排序树。然而,一棵给定的二叉排序树却可以由多种不同的序列得到。例如分别按照序列{3,1,4}和{3,4,1}插入初始为空的二叉排序树,都得到一样的结果。你的任务书对于输入的各种序列,判断它们是否能生成一样的二叉排序树。Input输入包含若干组测试数据。每组数据的第1行给出两个正整数N (n < = 10)和L,...原创 2019-11-20 20:52:31 · 130 阅读 · 0 评论 -
SDUTOJ 2140 - 数据结构实验之图论十:判断给定图是否存在合法拓扑序列
Problem Description给定一个有向图,判断该有向图是否存在一个合法的拓扑序列。Input输入包含多组,每组格式如下。第一行包含两个整数n,m,分别代表该有向图的顶点数和边数。(n<=10)后面m行每行两个整数a b,表示从a到b有一条有向边。Output若给定有向图存在合法拓扑序列,则输出YES;否则输出NO。Sample Input1 02 21 2...原创 2019-11-20 20:10:55 · 107 阅读 · 0 评论 -
SDUTOJ 3364 - 数据结构实验之图论八:欧拉回路 3697 / 5333 69.32% xam
Problem Description在哥尼斯堡的一个公园里,有七座桥将普雷格尔河中两个岛及岛与河岸连接起来。能否走过这样的七座桥,并且每桥只走一次?瑞士数学家欧拉最终解决了这个问题并由此创立了拓扑学。欧拉通过对七桥问题的研究,不仅圆满地回答了哥尼斯堡七桥问题,并证明了更为广泛的有关一笔画的三条结论,人们通常称之为欧拉定理。对于一个连通图,通常把从某结点出发一笔画成所经过的路线叫做欧拉路。人们...原创 2019-11-20 19:42:22 · 89 阅读 · 0 评论 -
SDUTOJ 2144 - 数据结构实验之图论九:最小生成树
Problem Description有n个城市,其中有些城市之间可以修建公路,修建不同的公路费用是不同的。现在我们想知道,最少花多少钱修公路可以将所有的城市连在一起,使在任意一城市出发,可以到达其他任意的城市。Input输入包含多组数据,格式如下。第一行包括两个整数n m,代表城市个数和可以修建的公路个数。(n <= 100, m <=10000)剩下m行每行3个正整数a ...原创 2019-11-20 16:56:45 · 136 阅读 · 0 评论 -
SDUTOJ 3362 - 数据结构实验之图论六:村村通公路
Problem Description当前农村公路建设正如火如荼的展开,某乡镇政府决定实现村村通公路,工程师现有各个村落之间的原始道路统计数据表,表中列出了各村之间可以建设公路的若干条道路的成本,你的任务是根据给出的数据表,求使得每个村都有公路连通所需要的最低成本。Input连续多组数据输入,每组数据包括村落数目N(N <= 1000)和可供选择的道路数目M(M <= 3000)...原创 2019-11-18 16:51:42 · 305 阅读 · 0 评论 -
SDUTOJ 3345 - 数据结构实验之二叉树六:哈夫曼编码
Problem Description字符的编码方式有多种,除了大家熟悉的ASCII编码,哈夫曼编码(Huffman Coding)也是一种编码方式,它是可变字长编码。该方法完全依据字符出现概率来构造出平均长度最短的编码,称之为最优编码。哈夫曼编码常被用于数据文件压缩中,其压缩率通常在20%~90%之间。你的任务是对从键盘输入的一个字符串求出它的ASCII编码长度和哈夫曼编码长度的比值。Inp...原创 2019-11-15 17:13:18 · 187 阅读 · 0 评论 -
SDUTOJ 2120 - 数据结构实验之链表五:单链表的拆分
Problem Description输入N个整数顺序建立一个单链表,将该单链表拆分成两个子链表,第一个子链表存放了所有的偶数,第二个子链表存放了所有的奇数。两个子链表中数据的相对次序与原链表一致。Input第一行输入整数N;;第二行依次输入N个整数。Output第一行分别输出偶数链表与奇数链表的元素个数;第二行依次输出偶数子链表的所有数据;第三行依次输出奇数子链表的所有数据。S...原创 2019-11-10 15:08:30 · 204 阅读 · 0 评论