- 博客(43)
- 收藏
- 关注
原创 哈夫曼编码
题目描述:手动输入一系列字符,自动统计字符出现的次数并作为该字符的权重,实现对应哈夫曼树的构造、编码、译码。样例:#include<bits/stdc++.h>using namespace std;#define maxval 10000#define MaxBit 100 //哈夫曼编码的最大位数typedef struct{ char ch; int weight; int flag; int lchild,rchil.
2021-11-28 22:03:28 812
原创 二叉树的建立与遍历程序
题目描述:将下面的二叉树输入并分别输出先序、中序、后序、广度优先遍历结果。输入样例:(空节点以#代替)先序遍历顺序输入:12#6##4#78#9####include<iostream>using namespace std;typedef char Type;//二叉树建立 //二叉树存储结构:二叉链表typedef struct B{ Type data; struct B* LChild; struct B* RChild;}BiTreeNode,
2021-11-24 21:15:42 263
原创 XDOJ 最大公约数与最小公倍数
题目说明:输入两个正整数,求这两个数的最大公约数和最小公倍数输入格式:共一行,输入两个正整数,以空格分隔输出格式:共一行,分别输出最大公约数和最小公倍数,以空格分隔示例:输入:25 10输出:5 50#include <stdio.h>int main() { int a, b, t, r, n; scanf("%d %d", &a, &b); if (a < b) { t = b; b = a; a = t; } r =
2021-11-21 09:21:00 910
原创 XDOJ 中间数
题目说明:在一个整数序列A1, A2, …, An中,如果存在某个数,大于它的整数数量等于小于它的整数数量,则称其为中间数。在一个序列中,可能存在多个下标不相同的中间数,这些中间数的值是相同的。给定一个整数序列,请找出这个整数序列的中间数的值。输入说明输入的第一行包含了一个整数n,表示整数序列中数的个数,1 ≤ n ≤ 1000。第二行包含n个正整数,依次表示A1, A2, …,An,1 ≤ Ai ≤ 1000。输出说明如果序列的中间数存在,则输出中间数的值,否则输出-1表示不存在中间
2021-11-21 09:19:34 945
原创 XDOJ 数位数字和
题目说明:假设n是一个由最多9位数字(d9, …, d1)组成的正整数。编写一个程序计算n的每一位数字之和输入说明: 输入数据为一个正整数n输出说明: 对整数n输出它的各位数字之和后换行输入样例: 3704输出样例: 14#include<stdio.h>int main(){ int n,i,d1,d=0; scanf("%d",&n); for(i=0;i<9;i++){ d1=n; n=n/10; d+=...
2021-11-21 09:15:43 443
原创 XDOJ 完全平方数
题目说明:若一个整数n能表示成某个整数m的平方的形式,则称这个数为完全平方数。写一个程序判断输入的整数是不是完全平方数。输入说明 输入数据为一个整数n,0<=n<10000000。输出说明 如果n是完全平方数,则输出构成这个完全平方数的整数m,否则输出no。输入样例 样例1:144样例2:15输出样例 样例1输出:12样例2输出:no#include<stdio.h>#include<math.h> ...
2021-11-21 09:14:00 1172
原创 XDOJ 跳一跳
题目说明:跳一跳是一款微信小游戏,游戏规则非常简单,只需玩家要从一个方块跳到下一个方块,如果未能成功跳到下一个方块则游戏结束。计分规则如下:1. 如果成功跳到下一个方块上,但未跳到方块中心,加1分2. 如果成功跳到下一个方块上,且刚好跳到方块中心,则第一次加2分,此后连续跳到中心时每次递增2分。也就是说,第一次跳到方块中心加2分,连续第二次跳到方块中心加4分,连续第三次跳到方块中心加6分,…,以此类推。3. 如果未能成功跳到方块上,加0分,且游戏结束现在给出玩家一局游戏的每次跳跃情况,请计算玩
2021-11-21 09:11:42 1169
原创 XDOJ 日期
#include <stdio.h> int isLeap(int year){ if((year%4==0 && year%100!=0)||(year%400==0)) { return 1; } else return 0;}int main(){ int allDays[12]={31,59,90,120,151,181,212,243,273,304,334,365}; int days[12]={31,28,31,30,31,30,3.
2021-11-21 09:10:45 1402 2
原创 XDOJ 炒股
题目说明:小明热爱炒股,经过一番分析之后,他决定投入一笔资金买入一定数量的某只股票。之后连续n天,他每天都关注这支股票并进行交易,但不会追加资金,即他只会用卖股票的钱买入股票。现在给出他首次买入股票时的价格和数量,以及其后每天股票的价格和他的交易数量,请计算n天之后他的资产(股票总值 + 现金)。输入说明:输入数据由若干行构成,第一行为三个正整数m,p,n。m表示首次买入股票数量(0<m<10000),p表示首次买入价格(0<p<=100),n表示之后进行股票交易的天
2021-11-21 09:09:51 285
原创 XDOJ 先输出较大者的个位数字,然后输出较小者的平方值。
题目说明:对于从键盘输入的2个整数,先输出较大者的个位数字,然后输出较小者的平方值。输入说明:输入的两个整数之间以一个空格分隔。输出说明:在一行上输出两个整数,整数之间以一个空格分隔,最后换行。输入样例样例1输入29989 372输出样例样例1输出9 138384#include<stdio.h>int main(){ int m,n,max,min; scanf("%d %d",&m,&n); if(m-n>=0){max=m;m.
2021-11-21 09:08:16 407
原创 XDOJ 数值求和
题目说明:输入整数N(N≤20),输入二维矩阵A[N] [N]各元素值,计算所有对角线元素的和,每一元素只加一次,输出结算结果。时间限制1内存限制10000类别1输入说明输入整形数据N和N×N矩阵各元素值,如2和矩阵元素A={1,2,3,4}。输出说明格式输出:输出计算结果。输入样例21 23 4输出样例10提示采用重循环结构实现计算过程,所有对角线元素只加一次。#include <stdio.h>int main() { int
2021-11-21 09:05:39 1394
原创 XDOJ 拷贝字符
题目说明:定义一个一维字符数组str[50],输入一串字符,输入整数位置信息M(M<50),调用函数char_cp()把指定位置M之后的内容,拷贝到新字符数组ch[50]中,使用指针完成地址传递,主函数完成数组输入和输出。输入说明:输入一个字符串和整形位置信息,位置M≥0。输出说明:格式输出:输出处理后字符串ch。输入样例There are three men.6输出样例re three men.#include <stdio.h>#include <
2021-11-21 09:02:32 1358
原创 数据结构 用栈实现四则混合运算
实验目的: 利用“栈”完成一定程度的四则混合运算,四则运算表达式应以字符串形式读入。该段程序要实现的基本功能是实现“十以内的加减乘除运算”,在实现四则运算的简单功能后,可以考虑让表达式的第一项为负数,还可以考虑括号、乘方运算,同时将数值范围从十以内的整数扩展到有理数,通过该计算器程序的编写更好的理解与运用栈。实验思路:样例:①输入:-3.14+2*15-7^2+(12*3) 输出:13.860②输入:-77+54*3^2-(19+3*5)...
2021-11-13 14:30:55 2790 1
原创 数据结构 利用单链表实现多项式求和、相乘运算
问题描述:利用单链表实现两个多项式【指数降次输入】的求和、相乘运算。输入、输出样例:样例说明: 输入共分两行,每一行分别代表对应的多项式,两行的第一个数字代表该多项式的项数,之后每两个数字为一组,前者为系数,后者为指数,输入时指数降次排序。 输出序列只有一行,两个数字为一组,前者为系数,后者为指数,指数同样降次排序。#include<stdio.h>#include<stdlib.h>typedef struct Pol...
2021-10-29 09:00:11 3158
原创 XDOJ PM2.5
问题描述:出一组PM2.5数据,按以下分级标准统计各级天气的天数,并计算出PM2.5平均值。PM2.5分级标准为:一级优(0<=PM2.5<=50)二级良(51<=PM2.5<=100为)三级轻度污染(101<=PM2.5<=150)四级中度污染(151<=PM2.5<=200)五级重度污染(201<=PM2.5<=300)六级严重污染(PM2.5>300)输入说明 输入分为两行,第一行是一个整数n表示天数(1&...
2021-10-29 08:59:53 583 1
原创 XDOJ 角谷定理
问题描述:对于一个大于1的整数n,如果n是偶数,则n = n / 2。如果n是奇数,则n = 3 * n +1,反复操作后,n一定为1。例如输入22的变化过程: 22 ->11 -> 34 -> 17 -> 52 -> 26 -> 13 -> 40 -> 20 -> 10 -> 5 -> 16 -> 8 -> 4 -> 2 -> 1,数据变化次数为15。输入一个大于1的整数,求经过多少次变化可得到自然数1。
2021-10-28 21:34:10 950 1
原创 XDOJ 计数排序
问题描述: 使用冒泡排序的方法,对输入的n个数进行从小到大排序,并输出排序中交换的次数(相等的数不交换)。输入格式 输入的第一行包括一个整数n(1<=n<=100)。接下来的一行包括n个整数,空格隔开。输出格式 将交换次数输出样例输入 4 3 1 4 2样例输出 3#include <stdio.h>#include <stdlib.h>int main() { int n, a[101]; int ...
2021-10-28 21:29:32 399
原创 XDOJ 迷宫问题
问题描述:一组数据,输入数据第1行为两个正整数m和n,m表示迷宫高度,n表示迷宫宽度,m<100,n<100;第2行为两个整数,分表表示起点的行列位置;第3为两个整数,分别表示终点的行列位置;其后为m行数据,每行n个整数,表示迷宫对应位置的状态,0表示通路,1表示障碍。问题输出以三元组形式(见P105)输出从起点到终点搜索到的第一条通路,没有则输出no输入样例8 81 18 80 0 1 0 0 0 1 00 0 1 1 0 0 1 00 0 0 0 1 1 0 0
2021-10-28 21:27:58 1133
原创 XDOJ 考勤系统
问题描述:实验室使用考勤系统对学生进行考勤。考勤系统会记录下每个学生一天内每次进出实验室的时间。每位学生有一个唯一编号,每条考勤记录包括学生的编号,进入时间、离开时间。给出所有学生一天的考勤记录,请统计每个学生在实验室工作的时间,并按照工作时间从长到短给出一天的统计表,工作时间相同时按编号从小到大排序。输入说明输入的第一行包含一个整数n,表示考勤记录条数。1≤n≤100,学生的编号为不超过100的正整数。接下来是n行,每行是一条考勤记录,每条记录包括学生编号k,进入时间t1和离开时间t2三项
2021-10-28 21:26:08 948
原创 XDOJ 密码强度
问题描述:每个人都有很多密码,你知道你的密码强度吗?假定密码由大写字母、小写字母、数字和非字母数字的符号这四类字符构成,密码强度计算规则如下:1. 基础分:空密码(密码长度为零)0分,非空密码1分2. 加分项1:密码长度超过8位,+1分3. 加分项2:密码包含两类不同字符+1分,包含三类不同字符+2分,包含四类不同字符+3分按照此规则计算的密码强度为0~5。请你设计一个程序计算给出的密码的强度。输入说明输入为一个密码字符串,字符串长度不超过50个字符。输出说明输出...
2021-10-28 21:23:17 736
原创 XDOJ 交换最值
问题描述:定义一个一维整形数组num[20],输入整数n(n≤20)和一个整形数列 (n个数),编写change()函数,查找出数列中的最大值和最小值,并把它们交换位置,主函数完成输入和输出,主函数输出处理后的数列,各元素之间空一个空格。指针进行地址传递,子函数实现查找最值和最值位置交换。输入说明:输入整数n (n≤20)和一个整形数列 (n个数)。输出说明:格式输出:输出处理后数列。输入样例52 3 1 5 8输出样例2 3 8 5 1#include <stdio
2021-10-28 21:21:54 1403
原创 XDOJ 车辆限行
问题描述:受雾霾天气影响,某市决定当雾霾指数超过设定值时对车辆进行限行,假设车牌号全为数字,且长度不超过6位,限行规则如下:(1)限行时间段只包括周一至周五,周六周日不限行;(2)如果雾霾指数低于200,不限行;(3)如果雾霾指数大于等于200且低于400,每天限行两个尾号的汽车,周一限行1和6,周二限行2和7,周三限行3和8,周四限行4和9,周五限行5和0;(4)如果雾霾指数大于等于400,每天限行五个尾号的汽车,周一、周三和周五限行1,3,5,7,9,周二和周四限行0,2,4,6,8。现
2021-10-28 21:20:53 276
原创 XDOJ 0-1矩阵
问题描述:查找一个只包含0和1的矩阵中每行最长的连续1序列。输入说明输入第一行为两个整数m和n(0<=m,n<=100)表示二维数组行数和列数,其后为m行数据,每行n个整数(0或1),输入数据中不会出现同一行有两个最长1序列的情况。输出说明找出每一行最长的连续1序列,输出其起始位置(从0开始计算)和结束位置(从0开始计算),如果这一行没有1则输出两个-1,然后换行。输入样例5 61 0 0 1 1 00 0 0 0 0 01 1 1 1 1 11 1 1 0 1 10
2021-10-28 21:17:56 1834 3
原创 XDOJ 累加和校验
问题描述:数据传输中一种常见的校验方式是累加和校验。其实现方式是在一次通讯数据包的最后加入一个字节的校验数据。这个校验字节内容为前面数据包中所有数据按字节累加所得结果的最后一个字节。例如:要传输的信息为: TEST(ASCII码为0x54,0x45,0x53,0x54)四个字节的累加和为:0x54+0x45+0x53+0x54=0x140校验和为累加和的最后一个字节,即0x40,也就是十进制的64现在请设计一个程序计算给出的待传输信息的累加校验和输入说明输入为一个字符串,字符串长度不超过
2021-10-28 21:15:23 990
原创 XDOJ 矩阵
问题描述:请写一个程序,对于一个m行m列(2<m<20)的方阵,求其每一行、每一列及主、辅对角线元素之和,然后按照从大到小的顺序依次输出这些值。注:主对角线是方阵从左上角到右下角的一条斜线,辅对角线是方阵从右上角到左下角的一条斜线。输入说明输入数据的第一行为一个正整数m;接下来为m行、每行m个整数表示方阵的元素。输出说明从大到小排列的一行整数,每个整数后跟一个空格,最后换行。输入样例415 8 -2 631 24 18 71-3 -9 27 1317...
2021-10-28 21:14:06 1719 1
原创 XDOJ 较大者的个位数字&&较小者的平方值。
题目描述:对于从键盘输入的2个整数,先输出较大者的个位数字,然后输出较小者的平方值。输入说明:输入的两个整数之间以一个空格分隔。输出说明:在一行上输出两个整数,整数之间以一个空格分隔,最后换行。输入样例样例1输入29989 372输出样例样例1输出9 138384#include<stdio.h>int main(){ int m,n,max,min; scanf("%d %d",&m,&n); if(m-n>=0){max=m;m.
2021-10-18 22:35:06 289
原创 XDOJ 搜索最值
题目描述:输入整数N(N≤80),输入一维行向量A[N]各元素值,查找出其中最大值并记录位置信息,输出N、最大值和位置信息, 数据之间空一格空格。输入说明:输入整形数据N和行向量各元素值,如8和行向量元素A={1,2,3,4,5,6,7,8}。输出说明:格式输出:输出N、最大值和位置信息,数据之间空一格。输入样例81 2 3 4 5 6 7 8输出样例8 8 7#include <stdio.h>int main() { int n, row, a[80] =
2021-10-18 22:32:31 172
原创 XDOJ 气温波动
题目描述:最近一段时间气温波动较大。已知连续若干天的气温,请给出这几天气温的最大波动值是多少,即在这几天中某天气温与前一天气温之差的绝对值最大是多少。输入说明输入数据分为两行。第一行包含了一个整数n,表示给出了连续n天的气温值,2 ≤ n ≤ 30。第二行包含n个整数,依次表示每天的气温,气温为-20到40之间的整数。输出说明输出一个整数,表示气温在这n天中的最大波动值。输入样例62 5 5 7 -3 5输出样例10#include <stdio.h>#
2021-10-18 22:31:13 3327
原创 XDOJ 工资计算
题目描述:小明的公司每个月给小明发工资,而小明拿到的工资为交完个人所得税之后的工资。假设他一个月的税前工资为S元,则他应交的个人所得税按如下公式计算: 1) 个人所得税起征点为3500元,若S不超过3500,则不交税,3500元以上的部分才计算个人所得税,令A=S-3500元; 2) A中不超过1500元的部分,税率3%; 3) A中超过1500元未超过4500元的部分,税率10%; 4) A中超过4500元未超过9000元的部分,税率20%; 5) A中超过9000元未超过3500
2021-10-18 22:29:53 690
原创 XDOJ 处理字符串
题目描述:从键盘输入一个字符串,将该字符串按下述要求处理后输出: 将ASCII码大于原首字符的各字符按原来相互间的顺序关系集中在原首字符的左边, 将ASCII码小于等于原首字符的各字符按升序集中在原首字符的右边。输入说明输入一行字符串,字符串c不长度超过100.输出说明输出处理后的一行字符串输入样例aQWERsdfg7654!@#$hjklTUIO3210X98aY输出样例sdfghjkla!#$0123456789@EIOQRTUWXYa#include <..
2021-10-18 22:27:04 1487
原创 XDOJ 表达式求值
题目描述:表达式由两个非负整数x,y和一个运算符op构成,求表达式的值。这两个整数和运算符的顺序是随机的,可能是”x op y”, “op x y”或者 “x y op”,例如,“25 + 3”表示25加3,“5 30 *” 表示5乘以30,“/ 600 15”表示600除以15。输入说明输入为一个表达式,表达式由两个非负整数x,y和一个运算符op构成,x,y和op之间以空格分隔,但顺序不确定。x和y均不大于10000000,op可以是+,-,*,/,%中的任意一种,分表表示加法,减法,乘法
2021-10-18 22:25:58 1275
原创 XDOJ 哥德巴赫猜想
问题描述任意一个大偶数都能分解为两个素数的和,对与输入的一个正偶数,写一个程序来验证歌德巴赫猜想。由于每个正偶数可能分解成多组素数和,仅输出分解值分别是最小和最大素数的一组,按从小到大顺序输出。输入说明输入一个正偶数n,1<n<1000。输出说明输出分解出的两个最小和最大素数。输入样例10输出样例3 7#include <stdio.h>#include <math.h>int fun(int );int main() { i
2021-10-18 22:24:33 3250
原创 XDOJ 累加和校验
题目描述:数据传输中一种常见的校验方式是累加和校验。其实现方式是在一次通讯数据包的最后加入一个字节的校验数据。这个校验字节内容为前面数据包中所有数据按字节累加所得结果的最后一个字节。例如:要传输的信息为: TEST(ASCII码为0x54,0x45,0x53,0x54)四个字节的累加和为:0x54+0x45+0x53+0x54=0x140校验和为累加和的最后一个字节,即0x40,也就是十进制的64现在请设计一个程序计算给出的待传输信息的累加校验和输入说明输入为一个字符串,字符串长度不超过
2021-10-18 22:23:01 3935 3
原创 XDOJ 回文数
题目描述:若一个非负整数其各位数字按照正反顺序读完全相同,则称之为回文数,例如12321。判断输入的整数是否是回文数。若是,则输出该整数各位数字之和,否则输出no。输入说明输入为一个整数n,0<=n<100000000。输出说明若该整数为回文数,则输出整数各位数字之和,否则输出no。输入样例样例1输入131样例2输入24输出样例样例1输出5样例2输出no#include <stdio.h>int main() { int x, .
2021-10-17 18:45:44 1755
原创 XDOJ ISBN
题目描述:每一本正式出版的图书都有一个ISBN号码与之对应,ISBN码包括9位数字、1位识别码和3位分隔符,其规定格式如"x-xxx-xxxxx-x",其中符号“-”是分隔符(键盘上的减号),最后一位是识别码,例如0-670-82162-4就是一个标准的ISBN码。ISBN码的首位数字表示书籍的出版语言,例如0代表英语;第一个分隔符“-”之后的三位数字代表出版社,例如670代表维京出版社;第二个分隔之后的五位数字代表该书在出版社的编号;最后一位为识别码。识别码的计算方法如下:首位数字乘以1加
2021-10-17 18:44:04 586
原创 XDOJ 画图
题目描述:输入的第一行包含一个整数n,表示要画的矩形的个数,1<=n<=100接下来n行,每行4个非负整数,分别表示要画的矩形的左下角的横坐标与纵坐标,以及右上角的横坐标与纵坐标。0<=横坐标、纵坐标<=100。输出说明输出一个整数,表示有多少个单位的面积被涂上颜色。输入样例21 1 4 42 3 6 5输出样例15#include <iostream>#include <cstring>using namespace s
2021-10-17 18:40:50 740
原创 XDOJ 相邻区域
题目描述:......忘记保存题目了orz......#include <stdio.h>int main() { int n, m, t, k; int i, j; int a[25][25]; int b[2400] = {0}; int p = 0; scanf("%d %d %d %d", &n, &m, &t, &k); for (i = 1; i <= n; i++) { for (j = 1; j <= m;
2021-10-17 18:39:17 176
原创 XDOJ 字符统计
题目描述:给出一个字符C和一行文字S,统计在这行文字S中字符C出现的次数。程序还需要支持大小写敏感选项: 当选项打开时,表示同一个字母的大写和小写看作不同的字符; 当选项关闭时,表示同一个字母的大写和小写看作相同的字符。输入说明输入数据由两行构成。第一行包含一个字符C和一个数字n。字符C为大小或小写英文字母。数字n表示大小写敏感选项,当数字n为0时表示大小写不敏感,当数字n为1时表示大小写敏感。字符C和数字n之间用空格分隔。第二行为一个字符串S,字符串由大小写英文字母组成,不含空格和..
2021-10-17 18:37:25 2506
原创 XDOJ 转换排序
题目描述:输入一维字符数组str[N](N≤80),查找出其中小写字母并转换成大写字母,按下面方式排序:1、只对大写字母进行排序;2、其他字符原位保持不动;3、转换后的各大写字母由小到大排序。输出排序后的结果。时间限制1内存限制10000类别1输入说明输入一行字符数据str[N](N≤80)。输出说明格式输出:输出仅对转换后的大写字母排序结果,其他字符原位不动输出。输入样例xA3T7p输出样例AP3T7X提示注意转换方式和排序要求。#include &l
2021-10-17 18:36:16 1404
原创 XDOJ 中心对称字符串
题目描述:对于有n个字符的字符串,设计算法判断字符串是否中心对称。例如,xyzzyx和xyzyx都是中心对称的字符串。输入说明:每组数据有2行:第一行为整数n,表示字符的个数,n小于100;第二行为n个字符组成的字符串。输出说明:判断这个字符串是否是中心对称的,是输出“YES”,不是输出“NO”。输入样例:12ThanksThanks输出样例:NO#include <stdio.h>#include <stdlib.h>#define MAXSTRLE
2021-10-17 18:34:59 619 1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人