- 博客(25)
- 收藏
- 关注
原创 PAT B1022 D进制的A+B (20 分)(进制转换)
题目:输入两个非负 10 进制整数A和B(≤230−1),输出A+B的D(1<D≤10)进制数。输入格式:输入在一行中依次给出 3 个整数A、B和D。输出格式:输出A+B的D进制数。输入样例:123 456 8输出样例:1103题解 :#include<iostream>#include<algorithm>#include<vector>using names...
2021-04-20 11:58:52 193
原创 PAT B1012 数字分类 (20 分) (坑人测试点)
题目给定一系列正整数,请按要求对数字进行分类,并输出以下 5 个数字:A1= 能被 5 整除的数字中所有偶数的和; A2= 将被 5 除后余 1 的数字按给出顺序进行交错求和,即计算n1−n2+n3−n4⋯; A3= 被 5 除后余 2 的数字的个数; A4= 被 5 除后余 3 的数字的平均数,精确到小数点后 1 位; A5= 被 5 除后余 4 的数字中最大数字。输入格式:每个输入包含 1 个测试用例。每个测试用...
2021-04-16 23:45:18 365
原创 习题7-5 找鞍点 (20 分)
题目:一个矩阵元素的“鞍点”是指该位置上的元素值在该行上最大、在该列上最小。本题要求编写程序,求一个给定的n阶方阵的鞍点。输入格式:输入第一行给出一个正整数n(1≤n≤6)。随后n行,每行给出n个整数,其间以空格分隔。输出格式:输出在一行中按照“行下标 列下标”(下标从0开始)的格式输出鞍点的位置。如果鞍点不存在,则输出“NONE”。题目保证给出的矩阵至多存在一个鞍点。输入样例1:41 7 4 14 8 3 61 6 1 20 7 8 9输出样例1:2.
2021-04-12 12:36:26 281
原创 set的常见用法
set翻译为集合,是一个内部自动有序且不含重复元素的容器。在考试中有可能出现需要去掉重复元素的情况,而且有可能因这些元素比较大或者类型不是int型而不能直接开散列表,在这种情况下就可以用set来保留元素本身而不考虑它的个数。当然,上面说的情况也可以通过再开一个数组进行下标和元素的对应来解决,但是set提供了更为直观的接口,并且加入set知乎可以实现自动排序,因此熟练使用set可以在做某些题时减少思维量。#include<iostream>#include<set>usi..
2021-04-10 17:03:29 576
原创 vector的常见用法
#include<iostream>#include<vector>using namespace std;int main(){ //push_back pop_back clear size操作 vector<int> a; cout << "a.size() " << a.size() << endl; //0 for (int i = 0; i < 10; i++) { a.push_back(i).
2021-04-10 16:05:05 99
原创 AcWing 842. 排列数字(全排列)
题目给定一个整数nn,将数字1∼n1∼n排成一排,将会有很多种排列方法。现在,请你按照字典序将所有的排列方法输出。输入格式共一行,包含一个整数nn。输出格式按字典序输出所有排列方案,每个方案占一行。数据范围1≤n≤71≤n≤7输入样例:3输出样例:1 2 31 3 22 1 32 3 13 1 23 2 1题解#include<iostream>using namespace std;co...
2021-03-21 15:24:48 479
原创 Acwing 854. Floyd求最短路
题目给定一个n个点m条边的有向图,图中可能存在重边和自环,边权可能为负数。再给定k个询问,每个询问包含两个整数x和y,表示查询从点x到点y的最短距离,如果路径不存在,则输出impossible。数据保证图中不存在负权回路。输入格式第一行包含三个整数n,m,k。接下来m行,每行包含三个整数x,y,z,表示存在一条从点xx到点y的有向边,边长为z。接下来k行,每行包含两个整数x,y,表示询问点x到点y的最短距离。...
2021-03-18 19:33:53 495
原创 Acwing 849. Dijkstra求最短路 I(朴素dijkstra)
题目给定一个nn个点mm条边的有向图,图中可能存在重边和自环,所有边权均为正值。请你求出11号点到nn号点的最短距离,如果无法从11号点走到nn号点,则输出−1−1。输入格式第一行包含整数nn和mm。接下来mm行每行包含三个整数x,y,zx,y,z,表示存在一条从点xx到点yy的有向边,边长为zz。输出格式输出一个整数,表示11号点到nn号点的最短距离。如果路径不存在,则输出−1−1。数据范围1≤n≤500...
2021-03-18 16:11:37 158
原创 PTA L1-039 古风排版 (20 分)
题目:中国的古人写文字,是从右向左竖向排版的。本题就请你编写程序,把一段文字按古风排版。输入格式:输入在第一行给出一个正整数N(<100),是每一列的字符数。第二行给出一个长度不超过1000的非空字符串,以回车结束。输出格式:按古风格式排版给定的字符串,每列N个字符(除了最后一列可能不足N个)。输入样例:4This is a test case输出样例:asa Tst ihe tsi ce s题解:#include<...
2021-03-11 14:06:05 81
原创 Acwing 快排和归并
归并void merge_sort(int a[],int l,int r){ if(l>=r) return; //判断一下当前区间内是否只有一个数或者没有数 int mid=l+r>>1; //取整个区间中点 merge_sort(a,l,mid); //递归排序左边 merge_sort(a,mid+1,r); //递归排序右边 int k=0,i=l,j=mid+1; //i指向左半边有..
2021-03-10 13:44:59 82
原创 习题11-7 奇数值结点链表 (20 分)
函数readlist从标准输入读入一系列正整数,按照读入顺序建立单链表。当读到−1时表示输入结束,函数应返回指向单链表头结点的指针。函数getodd将单链表L中奇数值的结点分离出来,重新组成一个新的链表。返回指向新链表头结点的指针,同时将L中存储的地址改为删除了奇数值结点后的链表的头结点地址(所以要传入L的指针)。#include <stdio.h>#include <stdlib.h>struct ListNode { int data; stru..
2021-03-08 17:53:46 151
原创 习题11-8 单链表结点删除 (20 分)
题目本题要求实现两个函数,分别将读入的数据存储为单链表、将链表中所有存储了某给定值的结点删除。链表结点定义如下:struct ListNode { int data; ListNode *next;};函数接口定义:struct ListNode *readlist();struct ListNode *deletem( struct ListNode *L, int m );函数readlist从标准输入读入一系列正整数,按照读入顺序建立单链表。当读到−1时.
2021-03-07 17:15:33 228
原创 AcWing 821.822.823(DFS,递归搜索树)
821. 跳台阶一个楼梯共有n级台阶,每次可以走一级或者两级,问从第0级台阶走到第n级台阶一共有多少种方案。输入格式共一行,包含一个整数n。输出格式共一行,包含一个整数,表示方案数。数据范围1≤n≤151≤n≤15输入样例:5输出样例:8题解:#include<iostream>using namespace std;int n;int cnt=0;void dfs(int x){ if(x==n) cn...
2021-03-05 17:52:50 124
原创 Acwing 778. 字符串最大跨距 和777,779
Acwing 778. 字符串最大跨距有三个字符串S,S1,S2,其中,S长度不超过300,S1和S2的长度不超过10。现在,我们想要检测S1和S2是否同时在S中出现,且S1位于S2的左边,并在S中互不交叉(即,S1的右边界点在S2的左边界点的左侧)。计算满足上述条件的最大跨距(即,最大间隔距离:最右边的S2的起始点与最左边的S1的终止点之间的字符数目)。如果没有满足条件的S1,S2存在,则输出-1。例如,S = “abcd123ab888efghij45ef67kl”, S1=”a.
2021-03-04 21:32:30 765 1
原创 Acwing 836. 合并集合(并查集)
题目:一共有n个数,编号是1~n,最开始每个数各自在一个集合中。现在要进行m个操作,操作共有两种:“M a b”,将编号为a和b的两个数所在的集合合并,如果两个数已经在同一个集合中,则忽略这个操作; “Q a b”,询问编号为a和b的两个数是否在同一个集合中;输入格式第一行输入整数n和m。接下来m行,每行包含一个操作指令,指令为“M a b”或“Q a b”中的一种。输出格式对于每个询问指令”Q a b”,都要输出一个结果,如果a和b在同一集合内,则输出“Yes”,否则输.
2021-03-04 16:35:39 172 1
原创 Acwing 776. 字符串移位包含问题(暴力匹配)
题目对于一个字符串来说,定义一次循环移位操作为:将字符串的第一个字符移动到末尾形成新的字符串。给定两个字符串s1和s2,要求判定其中一个字符串是否是另一字符串通过若干次循环移位后的新字符串的子串。例如CDAA是由AABCD两次移位后产生的新串BCDAA的子串,而ABCD与ACBD则不能通过多次移位来得到其中一个字符串是新串的子串。输入格式共一行,包含两个字符串,中间由单个空格隔开。字符串只包含字母和数字,长度不超过30。输出格式如果一个字符串是另一字符串通过若干次循环移位产生
2021-03-04 16:15:23 243 1
原创 Acwing 770. 单词替换(字符串流挖坑)
题目输入一个字符串,以回车结束(字符串长度不超过100)。该字符串由若干个单词组成,单词之间用一个空格隔开,所有单词区分大小写。现需要将其中的某个单词替换成另一个单词,并输出替换之后的字符串。输入格式输入共3行。第1行是包含多个单词的字符串 s;第2行是待替换的单词a(长度不超过100);第3行是a将被替换的单词b(长度不超过100)。输出格式共一行,输出将s中所有单词a替换成b之后的字符串。输入样例:You want someone to help you
2021-03-04 11:46:48 186 1
原创 Acwing 771. 字符串中最长的连续出现的字符(第一类双指针算法)
题目求一个字符串中最长的连续出现的字符,输出该字符及其出现次数,字符串中无空白字符(空格、回车和tab),如果这样的字符不止一个,则输出第一个。输入格式第一行输入整数N,表示测试数据的组数。每组数据占一行,包含一个不含空白字符的字符串,字符串长度不超过200。输出格式共一行,输出最长的连续出现的字符及其出现次数,中间用空格隔开。输入样例:2aaaaabbbbbcccccccddddddddddabcdefghigk输出样例:d 10a 1题..
2021-03-04 11:05:19 127 1
原创 Acwing756. 蛇形矩阵
题目输入两个整数n和m,输出一个n行m列的矩阵,将数字 1 到 n*m 按照回字蛇形填充至矩阵中。具体矩阵形式可参考样例。输入格式输入共一行,包含两个整数n和m。输出格式输出满足要求的矩阵。矩阵占n行,每行包含m个空格隔开的整数。数据范围1≤n,m≤1001≤n,m≤100输入样例:3 3输出样例:1 2 38 9 47 6 5题解#include<iostream>using namespace std;int q[1
2021-03-02 17:03:14 127
原创 字符指针数组
指针数组是由指针变量构成的数组,在操作时,既可以对数组元素进行赋值(地址值)和引用,也可以间接访问数组元素所指向的单元内容,改变或引用该单元的内容。字符指针数组:#include <stdio.h>int main(void){ char *str[] = {"abg","cd"};//*单独拿出来,指的是数组里的内容是*型的,str的类型是char *[]型 printf("%c\n",*(*(str+1)+1)); //d printf("%c\n",**.
2020-12-01 14:39:24 9361 1
原创 习题10-8 递归实现顺序输出整数 (15分)
递归递归,先递再归#include<stdio.h>void printdigits(int n);int main(){ int n; scanf("%d", &n); printdigits(n); system("pause"); return 0;}void printdigits(int n){ if (n < 10) printf("%d\n", n); else { printdigits(n / 10); prin
2020-11-29 19:40:07 279
原创 习题8-3 数组循环右移 及 练习7-8 方阵循环右移
数组循环右移本题要求实现一个对数组进行循环右移的简单函数:一个数组a中存有n(>0)个整数,将每个整数循环向右移m(≥0)个位置,即将a中的数据由(a0a1⋯an−1)变换为(an−m⋯an−1a0a1⋯an−m−1)(最后m个数循环移至最前面的m个位置)。函数接口定义:int ArrayShift( int a[], int n, int m );其中a[]是用户传入的数组;n是数组的大小;m是右移的位数。函数ArrayShif.
2020-11-25 17:40:16 733
原创 习题8-8 判断回文字符串
判断回文本题要求编写函数,判断给定的一串字符是否为“回文”。所谓“回文”是指顺读和倒读都一样的字符串。如“XYZYX”和“xyzzyx”都是回文。函数接口定义:bool palindrome( char *s );函数palindrome判断输入字符串char *s是否为回文。若是则返回true,否则返回false。裁判测试程序样例:#include <stdio.h>#include <string.h>#define MAXN 20typ.
2020-11-25 16:28:12 730
原创 习题8-6 删除字符(重写字符串思想)
删除字符(重写字符串思想)本题要求实现一个删除字符串中的指定字符的简单函数。函数接口定义:void delchar( char *str, char c );其中char *str是传入的字符串,c是待删除的字符。函数delchar的功能是将字符串str中出现的所有c字符删除。裁判测试程序样例:#include <stdio.h>#define MAXN 20void delchar( char *str, char c );void ReadString(
2020-11-24 19:54:41 642
原创 习题8-4 报数 (约瑟夫环)
报数游戏是这样的:有n个人围成一圈,按顺序从1到n编好号。从第一个人开始报数,报到m(<n)的人退出圈子;下一个人从1开始报数,报到m的人退出圈子。如此下去,直到留下最后一个人。本题要求编写函数,给出每个人的退出顺序编号。函数接口定义:void CountOff( int n, int m, int out[] );其中n是初始人数;m是游戏规定的退出位次(保证为小于n的正整数)。函数CountOff将每个人的退出顺序编号存在数组out[]中。因为C语言数组下标是从0开始的,所以第
2020-11-24 16:02:51 358
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人