C/C++
C/C++刷题
K.SHI
在读学生~ 小菜鸡一枚,欢迎一起交流学习~
展开
-
迷宫问题
题目描述: 给定一个m × n (m行, n列)的迷宫,迷宫中有两个位置,gloria想从迷宫的一个位置走到另外一个位置,当然迷宫中有些地方是空地,gloria可以穿越,有些地方是障碍,她必须绕行,从迷宫的一个位置,只能走到与它相邻的4个位置中,当然在行走过程中,gloria不能走到迷宫外面去。令人头痛的是,gloria是个没什么方向感的人,因此,她在行走过程中,不能转太多弯了,否则她会晕倒的。我原创 2016-12-25 17:54:20 · 1054 阅读 · 0 评论 -
拉丁矩阵
题目描述: 现有n种不同形状的宝石,每种宝石有足够多颗。欲将这些宝石排列成m行n列的一个矩阵,m<=n,使矩阵中每一行和每一列的宝石都没有相同的形状。试设计一个算法,计算出对于给定的m和n,有多少种不同的宝石排列方案。 题目类型:回溯算法 解题思路: 我把这几个相同处理方式的题目,放在了一起,希望有心者可以结合在一起思考,会更容易理解该类型的回溯题目。解题秘籍 代码如下:(严禁抄袭,请尝试原创 2016-12-25 17:41:45 · 2068 阅读 · 0 评论 -
填数字
题目描述: 填入1~12的数字。使得每条直线上的数字之和都相同。 图中,已经替你填好了3个数字,请你计算星号位置所代表的数字是多少? 题目类型:回溯算法 解题思路: 现在对于一个关于一定范围内的数字问题 ,尤其是互不相同的,不管是一维,二维,环或者说是无规则的图形,我的第一思考是回溯,比如一维的像数字排列,二维的拉丁矩阵、数独问题,首尾相连的素数环问题。我都是用相同的补充数字方法。(该方法原创 2016-12-22 17:20:47 · 1889 阅读 · 0 评论 -
数独问题
问题描述: 标准的数独游戏是在一个 9 X 9 的棋盘上填写 1 – 9 这 9 个数字,规则是这样的: 棋盘分成上图所示的 9 个区域(不同颜色做背景标出,每个区域是 3 X 3 的子棋盘),在每个子棋盘中填充 1 – 9 且不允许重复 ,下面简称块重复 每一行不许有重复值,每一列不许有重复值 题目类型:回溯算法代码如下:(严禁抄袭,请尝试自己动手实现。——Ldu1403)/*该题和拉原创 2016-12-25 17:36:49 · 1674 阅读 · 0 评论 -
电路布线问题
题目描述: 做电路板时,将n条连线分布到若干绝缘层上。在同一层的连线不相交。电路布线问题就是要确定将哪些连线安排到第一层上,使该层上有尽可能多的连线。题目类型:递归、动态规划题目分析:1)当i=1时,size(i,j)={0, 当j<p(1) {1, 当j>=p(1)2)当i>1时,size(i,j)={size(i-1,j), 当j<p(i)原创 2017-01-03 15:53:53 · 3521 阅读 · 0 评论 -
最大子段和
题目描述: 给定n个整数(可能包含负数)组成的序列,求该序列子段和的最大值。题目类型:动态规划 分别使用一层、两层、三层for循环实现。 代码如下:#include<stdio.h>int a[100]={0};void show(int begin,int end,int sum){//输出最大子段以及sum值 for(int i=begin;i<=end;i++) {原创 2017-01-03 13:04:30 · 889 阅读 · 0 评论 -
最大k乘积问题
题目描述: 设I是一个n位十进制整数。如果将I分割为k段,则可得到k个整数。这k个整数的乘积称为I的一个k乘积。试设计一个算法,对于给定的I和k,求出I的最大k乘积。题目类型:动态规划示例: 5 3 78654 输出:36624题目分析:/*构造出矩阵表,行从1--len,列从1--k 1) m(i,j)=w(1,i);(当j=1时) 2) m(i,j)=max{m(q,j-1)*w原创 2017-01-02 15:52:12 · 1493 阅读 · 0 评论 -
最小m段和
题目描述: 给定n个整数组成的序列,现在要求将序列分割为m段,每段子序列中的数在原序列中连续排列。如何分割才能使这m段子序列的和的最大值达到最小? 题目类型:动态规划题目分析:n个数字,分成m段,使这m段子序列的和的最大值达到最小 状态转移方程:s[i][j]=min{max{s[i][1]-s[k][1],s[k][j-1]}} s[i][j]表示 前i个数字分成j段。 可以这样理解,1原创 2017-01-02 21:13:41 · 1608 阅读 · 1 评论 -
n皇后问题
题目描述: N皇后问题是一个经典的问题,在一个N*N的棋盘上放置N个皇后,每行一个并使其不能互相攻击(同一行、同一列、同一斜线上的皇后都会自动攻击)。 题目类型:暴力、回溯暴力算法代码:(严禁抄袭,请尝试自己动手实现。——Ldu1403)#include<stdio.h>#include<math.h> #define n 8int main(){ int i,j,num,fla原创 2016-12-22 13:34:27 · 858 阅读 · 0 评论 -
会场安排问题
题目描述: 假设要在足够多的会场里安排一批活动,并希望使用尽可能少的会场。设计一个算法进行安排。 测试用例: 5(活动数目) 1 23 12 28 25 35 27 80 36 50 输出:3 题目类型:贪心算法题目分析: 一个活动的安排,取决于该活动的开始时间和上一个活动的结束时间是否冲突。所以先按照活动的结束时间将所有活动进行排序。然后循环安排活动,循环一遍原创 2017-01-02 15:23:10 · 3022 阅读 · 1 评论 -
最优分解问题
题目描述: 设n是一个正整数,现在要求将n分解为若干个互不相同的自然数的和,使这些自然数的乘积最大。 输入 10 输出 30 题目类型:贪心算法 题目分析: 该题是将正整数进行分解,而且互不相同,a+b>2,所以分解成的数字越接近越好。整体思路是,将该整数分解成从2开始依次递增的数字,直到不能分解为止,将剩余的数字从后往前往返依次加1。 例如:19 分解为2,3,原创 2017-01-02 15:15:10 · 2936 阅读 · 0 评论 -
39级台阶
问题描述: 小明看完电影《第39级台阶》,离开电影院的时候,他数了数视觉的台阶数,恰好是39级。 站在台阶前,他突然又想起一个问题:如果我每一步只能迈上1个或2个台阶,先迈左脚,然后左右交替,最后一步迈右脚,也就是说一共要迈偶数步。那么,上完39级台阶,有多少种不同的上法呢? 请利用计算机的优势,帮助小明寻找答案。 题目类型:回溯算法 代码如下:/*row代表行数,即台原创 2017-01-02 15:03:53 · 1238 阅读 · 0 评论 -
连续游资问题
题目描述: 假设某国家发行了n种不同面值的邮票,并且规定每张信封上最多只允许贴m张邮票。连续邮箱问题要求对于给定的n和m,给出邮票面值的最佳设计,在1张信封上贴出从邮资1开始,增量为1的最大连续邮资区间。 例如当n=5,m=4时,面值为1,3,11,15,32的5种邮票可以贴出邮资的最大连续区间是1到70。 题目类型:回溯算法 最多可以贴m张邮票,所以回溯时traceback选择原创 2017-01-02 11:36:57 · 1875 阅读 · 0 评论 -
租用游艇问题
长江俱乐部在长江设置了n个游艇出租站1,2,…n,游客可在这些游艇出租站租用游艇,并在下游的任何一个游艇出租站归还游艇。游艇出租站i到游艇出租站j之间的租金为r(i,j),设计一个算法,计算出从出租站1到出租站n所需要的最少租金。 测试用例: 3(站数) 5 15(第一站到其他相应各站的租金) 7(第二站到其他相应各站的租金) 输出: 12 题目类型:动态规划 题目分析:该题目的原创 2016-12-20 23:24:58 · 3424 阅读 · 0 评论 -
数字排列
有7对数字:两个1,两个2,两个3,…两个7,把它们排成一行。 要求,两个1间有1个其它数字,两个2间有2个其它数字,以此类推,两个7之间有7个其它数字。如下就是一个符合要求的排列: 17126425374635 当然,如果把它倒过来,也是符合要求的。 请你找出另一种符合要求的排列法,并且这个排列法是以74开头的。 注意:只填写这个14原创 2016-12-20 23:15:25 · 1055 阅读 · 0 评论 -
C++学生成绩排序
定义一个包含学生学号、姓名、年龄和三门课成绩的结构体,输入10个学生信息,并按总成绩由高到低的顺序排序并输出。原创 2015-12-13 22:16:07 · 21847 阅读 · 0 评论 -
C++学习笔记01
1、引用定义一个引用,并将其初始化为引用某个变量。类型名 & 引用名 = 某变量名;int n = 4;int &r = n;//r引用了n,r的类型是int &某个变量的引用,等价于这个变量,相当于该变量的一个别名。注:定义引用时一定要将其初始化成引用某个变量。初始化后,它就一直引用该变量,不会再引用别的变量了。引用只能引用变量,不能引用常量和表达式...原创 2019-01-27 10:50:47 · 474 阅读 · 0 评论 -
CCF、CSP历年真题(T1合集)
最初刷题,是按照年份,后来改变策略,由易到难,先做完所有年份的第一题,再做所有年份的第二题,以此类推…(所有代码已经校验可以获得100分)试题编号: 201812-1试题名称: 小明上学问题描述: 小明是汉东省政法大学附属中学的一名学生,他每天都要骑自行车往返于家和学校。为了能尽可能充足地睡眠,他希望能够预计自己上学所需要的时间。他上学需要经过数段道路,相邻两段道路之间设有至多一盏...原创 2019-03-14 23:54:49 · 5722 阅读 · 3 评论 -
矩阵连乘问题
方法一(递归方法)#include<stdio.h>#include<string.h>#define Num 100int p[Num],s[Num][Num];void traceback(int i,int j) { if(i==j) return; traceback(i,s[i][j]); traceback(s[i][j]+1,j原创 2018-01-02 10:39:29 · 1612 阅读 · 0 评论 -
排列的字典序问题
【问题描述】 n个元素共有n!个不同的排列。将这n!个元素按照字典序排列,可以从0编号,直至n!-1。例如,当n=3时,6个不同排列的字典序值为: 0 1 2 3 4 5 123 132 213 231 312 321 【编程任务】 给定n以及n个元素的一个排列,计算出这个排列的字典序值;给定一个字原创 2018-01-02 10:37:05 · 1826 阅读 · 0 评论 -
字典序问题
【问题描述】 在数据加密和数据压缩中常需要对特殊的字符串进行编码。给定的字母表A由26个小写字母组成。该字母表产生的升序字符串中字母从左到右出现的次序与字母在字母表中出现的次序相同,且每个字符最多出现1次。例如,a,b,ab,bc,xyz等字符串都是升序字符串。现在对字母表中产生的所有长度不超过6的升序字符串,计算它在字典中的编码。 【样例输入】 2 a b 【样例输出】 1 2代码原创 2018-01-02 10:33:52 · 1432 阅读 · 0 评论 -
最长公共子序列问题
【问题描述】 一个给定序列的子序列是在该序列中删去若干元素后得到的序列。 给定两个序列X和Y,找出二者的最长公共子序列。 方法一(递归)#include<stdio.h>#include<string.h>#include<stdlib.h>#define N 100char a[N],b[N];int p=0,q=0;int fun(int m,int n){//递归原创 2018-01-02 10:27:51 · 2489 阅读 · 0 评论 -
独立任务最优调度
【问题描述】 用两台处理机A和B处理n个作业。设第i个作业交给A处理需要时间ai,交给B处理需要时间bi。由于各作业的特点和机器的性能关系,ai和bi之间没有明确的大小关系。既不有将一个作业分开由2台机器处理,也没有一台机器能同时处理2个作业。设计一个动态规划算法,使得这两台机器处理完这n个作业的时间最短。 【测试用例】 6(任务数目) 2 5 7 10 5 2(机器A处理这些任务的时间原创 2018-01-02 10:19:21 · 1976 阅读 · 1 评论 -
石子合并问题
【问题描述】 在一个圆形操场的四周摆放着n堆石子。现要将石子有次序地合并成一堆。规定每次只能选择相邻的两堆石子合并成新的一堆,并将新的一堆石子数记为该次合并的得分。试设计一个算法,计算出将n堆石子合并成一堆的最小得分和最大得分。 【测试用例】 4(石子的堆数) 4 4 5 9(每一堆的石子数目) 【输出】 43 54代码:/*m[i][j] = m{m[i][k] + m[原创 2018-01-02 10:13:16 · 1793 阅读 · 0 评论 -
最优合并问题
【问题描述】 给定k个排好序的序列s1,s2,…,sk,用2路合并算法将这k个序列合并成一个序列。假设所采用的2路合并算法合并两个长度分别为m和n的序列需要m+n-1次比较。试设计一个算法确定合并这个序列的最优合并顺序,使所需要的总比较次数最少。 【测试用例】 4(序列数) 5 12 11 2(序列中的元素数) 【输出结果】 78(最差情况) 52(最优情况)代码:/*1.对原创 2018-01-02 10:04:49 · 4213 阅读 · 0 评论 -
双向冒泡排序
【问题描述】试编写相邻两趟是反方向起泡的冒泡排序算法【输入形式】输入排序序列的长度8和排序序列 49 38 65 97 76 13 27 49 【输出形式】 13 27 38 49 49 65 76 97//输出有序数串;显示排序的过程(每一趟的序列),和最后排序的结果 【样例输入】 8 49 38 65 97 76 13 27 49 【样例输出】 13 38 49 65 76原创 2018-01-02 09:57:04 · 1687 阅读 · 0 评论 -
HDU2096——小明A+B
Problem Description小明今年3岁了, 现在他已经能够认识100以内的非负整数, 并且能够进行100以内的非负整数的加法计算.对于大于等于100的整数, 小明仅保留该数的最后两位进行计算, 如果计算结果大于等于100, 那么小明也仅保留计算结果的最后两位.例如, 对于小明来说:1) 1234和34是相等的2) 35+80=15给定非负整数A和B, 你的任务是原创 2016-01-23 16:16:37 · 1510 阅读 · 0 评论 -
符号三角形问题
题目描述: 在符号三角形中,有14个“+“和14个“-”。2个同号下面是+,两个异号下面是-。 在一般情况下,符号三角形的第一行有n个符号。符号三角形问题,要求对于给定的n,计算有多少个不同的符号三角形,使其所含的“+”和“-”相同。 题目类型:暴力算法、回溯算法 0、1暴力算法代码如下:/*二进制将第一行确定,再由a[i][j]=a[i-1][j]^a[i-1][j+1]依次原创 2017-01-02 11:23:49 · 1207 阅读 · 0 评论 -
图的m着色问题
题目描述: 给定无向连通图和m种不同的颜色。用这些颜色为图G的各顶点着色,每个顶点着一种颜色。是否有一种着色法使G中每条边的两个顶点有不同的颜色。这个问题是图的m可着色判定问题。若一个图最少需要m种颜色才能使图中每条边相连接的两个顶点着不同颜色,称这个数m为这个图的色数。求一个图的色数m称为图的m可着色优化问题。 给定一个图以及m种颜色,请计算出涂色方案数。 题目类型:回溯算原创 2017-01-02 11:10:03 · 1080 阅读 · 0 评论 -
集合划分问题
1.问题描述: n 个元素的集合{1,2, , n }可以划分为若干个非空子集。例如,当n=4 时,集合{1,2 , 3,4}可以划分为15,不同的非空子集如下: {{1},{2} ,{3},{4}}, {{1,2} ,{3},{4}}, {{1,3},{2} ,{4}}, {{1,4} ,{2} ,{3}}, {{2,3},{1},{4}}, 其中,集合{{1,2 ,原创 2016-10-21 09:44:47 · 3854 阅读 · 2 评论 -
HDU2023——求平均成绩
Problem Description假设一个班有n(nInput输入数据有多个测试实例,每个测试实例的第一行包括两个整数n和m,分别表示学生数和课程数。然后是n行数据,每行包括m个整数(即:考试分数)。Output对于每个测试实例,输出3行数据,第一行包含n个数据,表示n个学生的平均成绩,结果保留两位小数;第二行包含m个数据,表示m门课的平均成绩,结果保留两位小数;第三行是一原创 2016-01-25 21:19:29 · 1911 阅读 · 0 评论 -
HDU2014--青年歌手大奖赛_评委会打分
Problem Description青年歌手大奖赛中,评委会给参赛选手打分。选手得分规则为去掉一个最高分和一个最低分,然后计算平均得分,请编程输出某选手的得分。Input输入数据有多组,每组占一行,每行的第一个数是n(2<n<=100),表示评委的人数,然后是n个评委的打分。Output对于每组输入数据,输出选手的得分,结果保留2位小数,每组输出占一行。Sample Input3 99 98原创 2015-12-10 23:12:03 · 644 阅读 · 0 评论 -
HDU2099——整除的尾数
Problem Description一个整数,只知道前几位,不知道末二位,被另一个整数除尽了,那么该数的末二位该是什么呢?Input输入数据有若干组,每组数据包含二个整数a,b(0Output对应每组数据,将满足条件的所有尾数在一行内输出,格式见样本输出。同组数据的输出,其每个尾数之间空一格,行末没有空格。Sample Input200 401992 950原创 2016-01-24 11:12:04 · 526 阅读 · 0 评论 -
HDU2040——亲和数
Problem Description古希腊数学家毕达哥拉斯在自然数研究中发现,220的所有真约数(即不是自身的约数)之和为:1+2+4+5+10+11+20+22+44+55+110=284。而284的所有真约数为1、2、4、71、 142,加起来恰好为220。人们对这样的数感到很惊奇,并称之为亲和数。一般地讲,如果两个数中任何一个数都是另一个数的真约数之和,则这两个数就是亲和数。原创 2016-01-24 10:23:15 · 2998 阅读 · 0 评论 -
HDU2098——分拆素数和
Problem Description把一个偶数拆成两个不同素数的和,有几种拆法呢?Input输入包含一些正的偶数,其值不会超过10000,个数不会超过500,若遇0,则结束。Output对应每个偶数,输出其拆成不同素数的个数,每个结果占一行。Sample Input30260Sample Output32#includeint Raw(int n原创 2016-01-23 15:50:41 · 722 阅读 · 0 评论 -
汽车牌照的排序与查询
汽车牌照的快速查询对一组汽车牌照进行排序和查找。 基本要求:(1)利用排序对汽车牌照进行排序;(2)采用折半查找思想完成查找。测试数据要求:车牌号中可以是数字和字符的组合,车牌号可以人工输入,也可以自动生成。#include#include#include#includetypedef char Car[10];typedef struct{ Car原创 2016-01-15 17:25:36 · 3967 阅读 · 2 评论 -
哈夫曼编码/译码器
哈夫曼编码/译码器根据给定的一组电文,设计该电文的哈夫曼编码。基本要求:(1)建立哈夫曼树的存储结构;(2)设计哈夫曼编码,并输出;(3)根据给定的电文,输出该电文的编码。 测试数据要求:输入表示权值的整数,且整数之和不超过100。 #include#include #include typedef struct{ int weight; in原创 2016-01-15 17:23:03 · 4160 阅读 · 0 评论 -
集合的并、交和差运算
在以单链表表示的正整数的有序集合上,实现集合的并、交和差运算。基本要求:(1)用单链表存储集合中的数据;(2)对单链表中的数据进行排序。测试数据要求:数据中包含的整数,是随机产生的两位整数#include#include#includetypedef struct LNode{ int data; struct LNode *next;}LNode,*Link原创 2016-01-15 17:21:14 · 9567 阅读 · 0 评论 -
排序算法应用
内容:给出n个学生的考试成绩表,每条记录由学号、姓名和分数和名次组成,设计算法完成下列操作:设计一个显示对学生信息操作的菜单函数如下所示:*************************1、录入学生基本信息2、直接插入排序3、冒泡排序4、快速排序5、简单选择排序6、堆排序7、2-路归并排序8、输出学生信息0、退出****************原创 2015-12-13 22:32:16 · 1291 阅读 · 0 评论 -
HDU2091——空心三角形
Problem Description把一个字符三角形掏空,就能节省材料成本,减轻重量,但关键是为了追求另一种视觉效果。在设计的过程中,需要给出各种花纹的材料和大小尺寸的三角形样板,通过电脑临时做出来,以便看看效果。Input每行包含一个字符和一个整数n(0Output每个样板三角形之间应空上一行,三角形的中间为空。显然行末没有多余的空格。Sample InputX 2原创 2016-02-18 19:05:26 · 2352 阅读 · 0 评论