算法日志
文章平均质量分 91
算法练习日志
rightstar_
虚即实,实即虚。
展开
-
算法设计与分析习题大全
算法设计与分析习题大全By HB题目来源:PTA一、算法基础办事大厅排队(STL)#include<iostream>#include<string>#include<list>#include<stdio.h>using namespace std;int main(){ int n,i; string str; list<string> data; cin>>n;原创 2021-01-08 10:20:57 · 4726 阅读 · 0 评论 -
PTA练习-- 寻宝,小明有一张藏宝图,上面有m*n个房间,每个房间里面都有一个有一定价值的宝物,小明只能从左上角的房间进入收集宝物...(动态规划)
寻宝小明有一张藏宝图,上面有m*n个房间,每个房间里面都有一个有一定价值的宝物,小明只能从左上角的房间进入收集宝物,且每次只能向右边或向下边的房间继续寻宝,最终只能从最右下的房间出来。请你帮小明计算下他最多可以收集到多少价值的宝物?输入格式:输入第一行给出两个正整数m,n(1=<m,n<=2000),随后给出m行数据,每行都包括n个正整数,中间用空格分割。输出格式:输出收集到的最大价值v,题目保证v<10^9。输入样例:4 41 18 9 37 10 6 125 13原创 2020-12-14 11:09:28 · 2278 阅读 · 1 评论 -
PTA练习--矩阵链相乘问题,矩阵的乘法定义如下:设A是m×p的矩阵,B是p×n的矩阵,... (动态规划)
矩阵链相乘问题输入样例:在这里给出一组输入。例如:530 35 15 5 10 20输出样例:在这里给出相应的输出。例如:11875#include <iostream>#include<stdio.h>using namespace std;long long dp[2001][2001];//尼玛大哥题目不是100吗????看来以后数组都要开最大了int arr[2002][2];int main(){ int n; cin>原创 2020-12-14 11:04:27 · 1527 阅读 · 0 评论 -
PTA练习----0-1背包,给定n(n<=100)种物品和一个背包。物品i的重量是wi,价值为vi,背包的容量为C(C<=1000)...,(动态规划)
0-1背包给定n(n<=100)种物品和一个背包。物品i的重量是wi,价值为vi,背包的容量为C(C<=1000)。问:应如何选择装入背包中的物品,使得装入背包中物品的总价值最大? 在选择装入背包的物品时,对每种物品i只有两个选择:装入或不装入。不能将物品i装入多次,也不能只装入部分物品i。输入格式:共有n+1行输入: 第一行为n值和c值,表示n件物品和背包容量c; 接下来的n行,每行有两个数据,分别表示第i(1≤i≤n)件物品的重量和价值。输出格式:输出装入背包中物品的最大总价值。原创 2020-12-14 10:51:29 · 16705 阅读 · 0 评论 -
PTA练习--回文串问题,一个字符串,如果从左到右读和从右到左读是完全一样的,比如“aba“,我们称其为回文串。现在给你一个字符串,可在任意位置添加字符,求最少添加几个字符,才能使其变成一个回文串。
1.回文串问题一个字符串,如果从左到右读和从右到左读是完全一样的,比如"aba",我们称其为回文串。现在给你一个字符串,可在任意位置添加字符,求最少添加几个字符,才能使其变成一个回文串。输入格式:任意给定的一个字符串,其长度不超过1000.输出格式:能变成回文串所需添加的最少字符数。输入样例:在这里给出一组输入。例如:Ab3bdAbb输出样例:在这里给出相应的输出。例如:21#include <iostream>#include <stdio.h>原创 2020-12-13 23:53:22 · 4480 阅读 · 1 评论 -
PTA练习----最大子段和,给定n个整数(可能为负数)组成的序列a[1],a[2],a[3],…,a[n]...,(动态规划)
1.最大子段和给定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 -2输出样例:在这里给出相应的输出。例如:20#incl原创 2020-12-13 16:05:36 · 8039 阅读 · 1 评论 -
计算机算法课---回溯(整数变换问题、子集和问题、工作分配问题)
题目1.整数变换问题整数i的两种变换定义为 , (向下取整);设计一个算法求给定两个整数a和b,用最少次数的 和 变换将整数a变换为b;例如实现提示:观察f和g两个操作可知,f总是使得i变大,g总是使得i变小。因此在决定让x执行哪个操作之前可以先判断i和目标值m之间的大小关系。如果x>m,就让其执行g操作;反之,执行f操作。问题的解分为两种情况,一种是有解,即n可以通过函数变换成m;另一种是无解,即n无法通过函数变换成m。有解的情况比较容易,只需要判断最后的i是否等于m即可。如果i等于m,原创 2020-12-11 21:59:05 · 578 阅读 · 0 评论 -
算法课作业---回溯( 最佳调度问题、 八皇后问题、0-1背包、整数拆分、666、工作分配问题)
题目1:1 最佳调度问题假设有n(n<=20)个任务由k(k<=20)个可并行工作的机器完成。完成任务i需要的时间为ti。 试设计一个算法,对任意给定的整数n和k,以及完成任务i 需要的时间为ti ,i=1~n。计算完成这n个任务的最佳调度,使得完成全部任务的时间最早。输入格式:输入数据的第一行有2 个正整数n和k。第2 行的n个正整数是完成n个任务需要的时间。输出格式:将计算出的完成全部任务的最早时间输出到屏幕。输入样例:在这里给出一组输入。例如:7 32 14 4 16原创 2020-12-08 17:04:38 · 836 阅读 · 0 评论 -
PTA分形的递归输出
问题分形,具有以非整数维形式充填空间的形态特征。通常被定义为“一个粗糙或零碎的几何形状,可以分成数个部分,且每一部分都(至少近似地)是整体缩小后的形状”,即具有自相似的性质。一个盒状分形定义如下: 度为1的盒分形为:X度为2的盒分形为:X X XX X依次类推,如果B(n-1)表示n-1度的盒分形,则n度的盒分形递归定义如下:B(n - 1) B(n - 1)&原创 2020-11-23 11:26:01 · 453 阅读 · 0 评论 -
循环日程表(数独枚举方法)
前言算法练习记录题目设有N个选手进行循环比赛,其中N=2^M,要求每名选手要与其他N−1名选手都赛一次,每名选手每天比赛一次,循环赛共进行N−1天,要求每天没有选手轮空。输入格式:输入:M(M<=7)。输出格式:输出:表格形式的比赛安排表。一行各数据间用一个空格隔开。输入样例:3输出样例:在这里给出相应的输出。例如:1 2 3 4 5 6 7 82 1 4 3 6 5 8 73 4 1 2 7 8 5 64 3 2 1 8 7 6 55 6 7 8 1 2 3原创 2020-11-23 11:10:54 · 261 阅读 · 0 评论 -
算法日志--PTA棋盘覆盖问题(分治算法)
前言算法日志记录PTA题目在一个2^k * 2k(k为正整数,k<=10,length=2k)个方格组成的棋盘中,恰有一个方格与其他方格不同,称该方格为一特殊方格(其坐标为aa,bb,分别代表行坐标号和列坐标号),以及有四种L型骨牌(如下图)。求用若干块这种L型骨牌实现除该特殊点棋盘的全覆盖。(本题要求采用分治算法做)输入格式:输入三个数,分别是aa,bb,length.输出格式:输出整个棋盘。其中特殊方格填为0,然后铺棋盘的顺序为:先铺四个子棋盘交界的部分,然后递归的对每个子棋盘按原创 2020-11-23 10:57:57 · 1948 阅读 · 0 评论 -
算法题:(递归)半数集问题。
前言算法练习记录题目半数集问题。问题描述:给定一个自然数n,由n开始可以依次产生半数集set(n)中的数如下:(1) n属于set(n) ;(2) 在n的左边加上一个自然数,但该自然数不能超过最近添加的数的一半;(3) 按此规则进行处理,知道不能再添加自然数为止。例如,set(6)={6,16,26,126,36,136},半数集set(6)中有6个元素。输入:整数n(0<n<1000)输出:半数集set(n)中的元素个数。截图代码(java):package c原创 2020-11-17 18:34:06 · 942 阅读 · 2 评论 -
算法题:最大子段和问题。给定由n个整数组成的序列,求序列中子段的最大和,若所有整数均为负整数时定义最大子段和为0。
前言算法练习记录题目最大子段和问题。给定由n个整数组成的序列,求序列中子段的最大和,若所有整数均为负整数时定义最大子段和为0。例如, 当(a1,a2,a3,a4 ,a5,a6) = (-2,11,-4,13,-5,-2)时,最大子段和为: a2+a3+a4=20输入格式:第一行输入整数个数n(1≤n≤10000),再依次输入n个整数。输出格式:输出第一行为最大子段和,第二行为子段第一个数和最后一个数在整个序列中的位序。输入样例1:6-2 11 -4 13 -5 -2输出样原创 2020-11-16 16:43:04 · 4073 阅读 · 0 评论 -
算法题:有两队选手每队5人进行一对一的比赛,甲队为A、B、C、D、E,乙队为J、K、L、M、N,经过抽签决定比赛对手名单。
前言日常算法练习记录题目有两队选手每队5人进行一对一的比赛,甲队为A、B、C、D、E,乙队为J、K、L、M、N,经过抽签决定比赛对手名单。规定A不和J比赛, M不和D及E比赛。列出所有可能的比赛名单。分析枚举遍历算法。三维数组teamR存放组合情况,遍历所有组合,check检查条件成立则输出。teamR数组结构:kteamR[k][0]teamR[k][1]teamR[k][2]teamR[k][3]teamR[k][4]0AJBJCJDJEJ1原创 2020-11-16 16:16:43 · 1120 阅读 · 0 评论 -
网络安全---简单RSA算法的实现(C++)
前言这是课程学习中的一个作业,把手写过程转成程序实现题目4、 已知RSA算法中,素数p=5,q=7,模数n=35,公钥e=5,明文为bed,对明文进行加解密,使用手工完成RSA公开秘钥密码体制算法加密运算。字母数字映射表如下:可以参考, 用实例给新手讲解RSA加密算法但并不保证网页内容完全正确,请自行判断解题分析加解密过程:设计公私密钥(e,n)和(d,n):由题目需求p = 5 ,q = 7,模数n = 35 ,公钥e = 5 得 f(n) = (p-1)*(q-1)=24,e =原创 2020-11-15 21:32:42 · 4469 阅读 · 2 评论 -
c++实现冒泡、选择、希尔、快速排序算法及比较
前言比较几个排序算法运行效率,10万个随机数.运行截图代码#include <iostream>#include<time.h>#include<stdlib.h>using namespace std;void display(int *arr,int n){ for(int i=0;i<n;i++) cout<<arr[i]<<" "; cout<<"\n";}//数组拷原创 2020-11-15 20:50:12 · 227 阅读 · 0 评论 -
算法练习日志2(最大子序和+假币问题)
算法练习日志一、最大子序和(单调队列)网站链接:acwing 135题目描述输入一个长度为n的整数序列,从中找出一段长度不超过m的连续子序列,使得子序列中所有数的和最大注意: 子序列的长度至少是1。输入格式第一行输入两个整数n,m。第二行输入n个数,代表长度为n的整数序列。同一行数之间用空格隔开。输出格式输出一个整数,代表该序列的最大子序和。数据范围1≤n,m≤300000输入样例:6 41 -3 5 1 -2 3输出样例:7#include &原创 2020-09-26 23:10:31 · 122 阅读 · 0 评论 -
算法练习日志1(折半查找+快排+增量穷举)
算法练习日志一、折半查找(二分查找)/****题目描述:*利用二分查找算法查找数组中某个数*/#include <iostream>using namespace std;int binSearch(int a[],int low,int high,int num){ int mid; if(low<high) { mid = (low+high)/2; //查找区间中间位置 if(a[mid]==num)原创 2020-09-20 21:04:29 · 599 阅读 · 0 评论