自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

JamSlade的博客

真正的大师永远都怀着一颗学徒的心

  • 博客(77)
  • 资源 (2)
  • 收藏
  • 关注

原创 课后自主练习(dp)1066. 不妙 naive《编程思维与实践》个人学习笔记

题目思路①(数学)本废物看了两天的数位dp代码还是没看懂如何写递归所以求助了现成的大佬的代码,用数学思路解决原帖 Problem E 不妙(From 2019计科第二次实训)以下是对该思路的翻译①首先,大数字遇见9就把后面所有的数字变成8(想不出来就举个例子)912显然900 - 912的数字都不是妙数字推了之后就到了899运用递归思想可知889到 899都不是妙数所以只需要统计0到888的妙数即可②不难发现888可以分成三个部分 800 80 8先抽出来800进行分析

2021-03-30 19:17:11 188

原创 课后自主练习(高精度)1070. 计算a的n次方的大整数 medium《编程思维与实践》个人学习笔记

题目思路这些题目基本都可以用deque处理,先进行判断power是1或0的情况然后p是其他数据就进行循环先把deque push进去一个base数,之后从后往前的×base之后进位,进到最前位push_front即可代码#include<iostream>#include<deque>using namespace std;void POW(int b, int p){ deque<int>D; D.push_back(b);

2021-03-29 15:18:37 278

原创 课后自主练习(高精度)1069. 二进制倒置 super《编程思维与实践》个人学习笔记

题目数据310010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000思路:十进制转二进制分三步①十进制转化二进制由于输入的字符过多,只能用字符串接受,然后把他们放在字符串里面依次处理a 十进制转二进制就是看末尾是否为偶数,如果是偶数就是0奇数就是1,然后往二进制字符串的首位插入(你放末尾也可以,记得最后反转一下就好)然后十进制的数字要

2021-03-29 15:15:57 206 1

原创 课后自主练习(递归)1065. 显示路径 naive《编程思维与实践》个人学习笔记

题目思路这个题目就不只是考曼哈顿距离那么简单了详见1036. 计算总步数这个题目还是得用递归来做了,每次走2^(n-1)步①我们可以从原点走第一步后吧整个地图缩小为原来的1/2,这样子可以保证下一次走的路也缩小为原来的1/2②每次走一步之后,把新的位置设置为原点,然后再缩小再选择可以走的情况再继续迭代比如(0,0)要走到(2,3)先往S走一步编程(0,-1)把(0,-1)设置为新的远点,那么就变成从(0,0)走到(2,4)了然后地图整体缩小变成继续走1步,要求从(0,0)走到(1,2)

2021-03-28 16:18:01 219 5

原创 课后自主练习(DP)1064. 计算多项式的系数 hard《编程思维与实践》个人学习笔记

题目数据32 5 290 130 160235823 382573 999 111 8881 1 3 1 2思路①这题目略坑,说要输出一个mod10007的数字那么我们有一个mod的性质(a+b)%10007==a%10007+b%10007(a+b)\%10007 == a\%10007 +b\%10007(a+b)%10007==a%10007+b%10007(a×b)%10007==a%10007×b%10007(a×b)\%10007 == a\%10007 ×b\%10007(

2021-03-27 16:20:22 213

原创 课后自主练习(字符串)1054. 听写字符串 super《编程思维与实践》个人学习笔记

题目思路你保证在开头的字母是降序就好了开头是C,以C为基准如果下一个单词比C大比如说G,就把G放在B前,然后以G作为新的基准下一个单词比G大就放在G前面,比G小放在末尾复杂度O(n)吧代码#include<iostream>using namespace std;int main(){ string a; char c = getchar(); while(c != EOF) { if(c >= 'a'

2021-03-27 11:52:26 118

原创 课后自主练习(字符串)1053. 最大分词法 super《编程思维与实践》个人学习笔记

题目思路①根据字典的性质,可以把每个字典单词的开头分成26个小类来储存,可以减少搜索时间,如果要省排序就使用set(看了数据才知道还会出大写字母,需要把大写字母的情况考虑上不然会runtime error)②存放好之后就是遍历了,遍历没啥好说的,复杂度O(n²)把老生常谈的越界问题、字母表问题、特判在注释中有提及代码#include<iostream>#include<set>using namespace std;//set<string> S

2021-03-27 11:49:38 110

原创 课后自主练习(字符串)1052. 删除注释 naive《编程思维与实践》个人学习笔记

详见面向对象程序设计(基于C++)0302 删除注释

2021-03-27 11:13:50 140

原创 课后自主练习(字符串)1051. 排版 medium《编程思维与实践》个人学习笔记

题目给定一行由英文单词、标点符号、数字和空格组成的字符串,对其进行排版输出,要求:1、原文中由空格分开的连续非空字符串视为一个单词。单词不能分割或跨行输出,同一行的相邻单词由一个或多个空格分开,每行行首和行尾不能为空格,排版后行数尽可能少;2、除最后一行外,每行长度为 M,长度不足 M 的由空格补足,空格在所有单词之间尽可能均匀分布,在满足上述条件下,空格尽可能置于靠右的位置;3、最后一行长度不能超过 M,每两个单词之间由一个空格分开,根据实际长度输出,长度不足 M 的不用补足。输入格式第 1

2021-03-27 11:11:54 534

原创 面向对象程序设计(基于C++)0302 删除注释

题目去除一个 C++ 程序中的行注释与块注释。输入格式一段 C++ 程序。输出格式去除所有行注释与块注释后的程序。思路没啥好说的,所有内容放在一个字符串中,然后遍历一遍特判所有情况,正常和带双引号 单引号的字符正常放在新的字符串中,注释就不放在新的字符串中代码#include<iostream>using namespace std;int main(){ string str; char c; while((c = getchar()) !

2021-03-26 19:46:55 437

原创 面向对象程序设计(基于C++)0301字符组合

题目原题请参见1039. 字符组合但是这次要求用set容器装好容器后再依次输出代码模板/***************************************************************//* *//* DON'T MODIFY main function ANYWAY!

2021-03-26 19:41:14 145

原创 课后自主练习(递归)1063. 统计字符串个数 medium《编程思维与实践》个人学习笔记(review)

题目在 0 和 1 组成的长度为n (n<=20) 的字符串中,输出不包含 “101”子串的字符串的个数。输入格式本题有多组测试数据。每组测试数据占一行,含一个正整数 ,表示字符串的长度。n = -1 表示输入结束。输出格式对每组测试数据,在一行中输出表示不包含 “101”子串的字符串的个数。思路①①假定长 n-1且不含101的字符串 ⌂⌂ ⌂⌂⌂末尾加上0变成 ⌂⌂ ⌂⌂⌂0 显然也符合题目的条件,数量为f(n−1)f(n-1)f(n−1)②长 n-1且不含101的字符串 ⌂⌂ ⌂

2021-03-25 19:25:59 699

原创 课后自主练习(递归)1062. 达到回文数 naive《编程思维与实践》个人学习笔记

题目思路一开始考虑到用deque容器来进行加减操作但是想到不好在中间处理,所以考虑还是用回字符串比较方便思路就是先遍历一遍字符串发现是否为回文数,不是回文数就进行加减,之后再次判断直到满足题目要求为止代码(迭代)#include<iostream>using namespace std;void ADD(string & s){ string s1 = s; int len = s.length(); short * SUM = new sho

2021-03-25 16:30:45 174 1

原创 课后自主练习(递归)1061. 统计特定字串模式的个数 medium《编程思维与实践》个人学习笔记

题目在 0 和 1 组成的长度为n(1<=n<=31)的字符串中,统计包含m(1<=m<=n)个连续 1 子串的字符串的个数。数据1 12 13 14 310 310 520 1020 1531 2031 1-1 -1思路代码(递归)ll RE(int n, int m){ if(n < m) return 0; if(n == m) return 1; return 2 * RE(n - 1,m) + pow(2,

2021-03-25 12:37:42 483

原创 课后自主练习(递归)1060. 泰波拿契数列的前74项 naive《编程思维与实践》个人学习笔记

标题思路这个题目用递归绝对超时,时间复杂度O(3^n)老老实实迭代,复杂度才O(n)代码#include<iostream>using namespace std;long long RE(int num){ if(num == 0) return 0; if(num == 1) return 1; if(num == 2) return 1; //cout << num << endl; return RE(

2021-03-24 15:02:46 275

原创 课后自主练习(递归)1059. Fj & haozi medium《编程思维与实践》个人学习笔记

题目思路打卡题。。没啥好说的,注意好递归的返回条件 和 floor在1 和 n的时候的特殊情况即可代码#include<iostream>using namespace std;int times(int ALLf, int floor, int minute, int end){ if(minute == 0 && floor == end) {return 1;} else if(minute == 0 && flo

2021-03-24 14:45:53 165

原创 课后自主练习(递归)1058. 地铁站 medium《编程思维与实践》个人学习笔记

题目思路不完全归纳法不难发现f(n)=f(n−1)+f(n−2)upf(n) = f(n - 1) + f(n-2)_{up}f(n)=f(n−1)+f(n−2)up​且f(n)up=f(n−1)up+f(n−2)up f(n)_{up} = f(n-1)_{up}+ f(n-2)_{up}f(n)up​=f(n−1)up​+f(n−2)up​所以这个题目用迭代更好,用递归的话只能解出来每一段的delta,如果是解出delta再累加那时间复杂度太高了,其实不如迭代来的快代码(递归)#

2021-03-24 14:23:19 128

原创 课后自主练习(递归)1057. 波兰表达式 easy《编程思维与实践》个人学习笔记

题目逆波兰式是计算机专业常用的表达式,又称后缀表达式。反过来,把运算符前置的算术表达式则称为波兰式,或前缀表达式。例如普通的表达式的波兰表示法为2+3:+ 2 3。波兰表达式的优点也是运算符之间不必有优先级关系,也不必用括号改变运算次序 .例如:(2 + 3) * 4的波兰式为:* + 2 3 4,而5-6*7 的波兰表达式为:- 5 * 6 7。现给定一个波兰表达式,请编写程序计算该表达式的值。注意:波兰表达式中的运算符包括+ - * / 四个。数据3+ 2 0- 0.5 3* +

2021-03-22 21:37:27 315

原创 课后自主练习(字符串)1050. GPS数据处理 hard《编程思维与实践》个人学习笔记

标题NMEA-0183协议是为了在不同的GPS(全球定位系统)导航设备中建立统一的BTCM(海事无线电技术委员会)标准,由美国国家海洋电子协会(NMEA-The National Marine Electronics Associa-tion)制定的一套通讯协议。GPS接收机根据NMEA-0183协议的标准规范,将位置、速度等信息通过串口传送到PC机、PDA等设备。NMEA-0183协议是GPS接收机应当遵守的标准协议,也是目前GPS接收机上使用最广泛的协议,大多数常见的GPS接收机、GPS数据处理软件

2021-03-22 18:38:58 338 3

原创 课后自主练习(字符串)1049. 解密字符串 medium《编程思维与实践》个人学习笔记

题目某人用一串非递减的数字字符表示一个密码(如:001,114,456779等),但经常忘记自己的密码,因此想把密码记录在某个地方。为防止泄密,将数码0到9用全大写的英文单词表示并将所有字母打乱。例如:密码114表示为ONEONEFOUR,或者OURNEONFOE,FOOONNEERU等。现在给定一个大写字母表示的字符串,要求算出原来的数字表示的密码。输入数据保证答案唯一。思路考虑到每个英文数字唯一的字符,出现一个对应的字符就对应的字符--,对应的数字++,然后基数排序顺序输出即可代码#i

2021-03-22 16:04:49 228

原创 课后自主练习(字符串)1048. Base64编码 easy《编程思维与实践》个人学习笔记

题目Base64 编码是一种编码方式,通常用于把二进制数据编码为 64 个可打印字符数据。Base64 编码采用的 64 个可打印字符为:A-Z、a-z、0-9、+、/64 个字符只需要用 6 位二进制来表示,对应的十进制数值为 0~63。长度为 3 个字节(24 位)的数据经过 Base64 编码后就变为 4 个字符。例如,字符串 “Man” 经过 Base64 编码后为:”TWFu”。其编码过程如下:第一步,’M’、’a’、’n’ 三个字符的 ASCII 码分别是 77、97、110,对应

2021-03-22 16:01:47 270

原创 课后自主练习(递归)1056. 种田 easy《编程思维与实践》个人学习笔记

题目思路其实这个题目就是辗转相除法的应用假如需要求 1997 和 615 两个正整数的最大公约数,用欧几里得算法,是这样进行的:1997 / 615 = 3 (余 152)615 / 152 = 4(余7)152 / 7 = 21(余5)7 / 5 = 1 (余2)5 / 2 = 2 (余1)2 / 1 = 2 (余0)至此,最大公约数为1抽象成 a / b = c ……d那么每次消耗的体力(周长)的计算就是4b * c;然后第一次的b和d变成了新的a和b代码(递归)ll

2021-03-21 18:35:40 180

原创 课后自主练习(dp)1055. 台阶走法数 hard《编程思维与实践》个人学习笔记

题目思路把走n层台阶抽象成函数f(n)于是会有f(0)=1f(1)=1f(2)=2f(3)=4f(0)=1\quadf(1) = 1\quadf(2) = 2\quadf(3) = 4\quadf(0)=1f(1)=1f(2)=2f(3)=4f(n)=f(n−1)+f(n−2)+f(n−2)+f(n−4)n≥4f(n) =f(n-1)+f(n-2)+f(n-2)+f(n-4) \quad n≥4f(n)=f(n−1)+f(n−2)+f(n−2)+f(n−4)n≥4代码(递归)long

2021-03-21 18:30:09 202

原创 课后自主练习(字符串)1047. 字串间距 easy《编程思维与实践》个人学习笔记

题目数据3abbdbdabbdcdabdababcccbdaaaaaa11a21a11xa21xa11xa21xa21xa11思路易错点①判定s1和s2是否出现在s中② s1 和 s2的相对位置并不确定③ 间距和(s1末尾s2开头)的关系代码#include<iostream>using namespace std;int distance(const string &s1, const string &s2, const stri

2021-03-21 12:49:58 151

原创 课后自主练习(字符串)1046. 单词表 naive《编程思维与实践》个人学习笔记

题目思路C++ 直接放set容器里面输出就好如果用C语言就把所有数据放在char数组中(别忘记加‘\0’),然后开若干个char*数组来指向各个单词然后qsort排序即可忘记怎么操作就看看以前的内容 课后自主练习(排序)1022. 邮件地址排序 hard《编程思维与实践》个人学习笔记C++代码#include<iostream>#include<set>using namespace std;int main(){ int t; cin &gt

2021-03-21 11:08:18 135

原创 课后自主练习(字符串)1045. 一元多项式乘法 easy《编程思维与实践》个人学习笔记

题目思路①读取字符串题目并没有说有多少种可能,所以要使用while循环,这里注意scanf的返回是 while((scanf("%s %s",s1,s2)) == 2)也可以使用while(cin >> s1 >> s2)②两个字符串的系数和幂处理把各个字符分开,可以分成以下部分a 系数的符号(±) 设置一个变量sig来储存+1或-1b 系数 (对应常数项也通用)c “x”d 指数 是否有出现‘^’把各个部分的后续会出现什么情况都考虑好了,再把系数放进数组即

2021-03-20 15:27:36 181

原创 课后自主练习(字符串)1044. 数据压缩 easy《编程思维与实践》个人学习笔记

题目解题思路开两个数组遍历一遍即可;需要注意最后表示数组的位置的变量要+1代码#include<iostream>using namespace std;void compress(string & a){ int each[500] = {0}; char c[500] = {0}; int len = a.length(); c[0] = a[0]; each[0]++; int location = 0;

2021-03-20 13:55:49 91

原创 课后自主练习(字符串)1043. 统计单词个数 easy《编程思维与实践》个人学习笔记

题目思路这个题目比较离谱的是ANd aNd这种单词也会出现并且不计入,所以打表判别会比较长一点,但基本思路就是遍历一遍遇见空格和末尾就+1,然后判断是否在表里,不在就-1代码#include<iostream>using namespace std;string no_statistic[] = { "the","The","tHe","thE","THe","tHE","ThE","THE", "a","A", "an","An","AN","aN"

2021-03-20 11:42:24 125

原创 课后自主练习(字符串)1042. 字串变换 hard《编程思维与实践》个人学习笔记

题目数据3aaaaaaaaaabbbbbbaaaabbbbbbaaaaaaaaaaabbaaa答案21思路①判断各个字符串的基是否相同AABBCC ->ABCEEEEEEEEOO ->EO所以先对各个代码进行去重然后逐一比较判断是否都相等②如何求出赋值/删减的最小值?首先我们由不完全归纳发现一个数列所有数字和中位数的差的绝对值累加和最小所以我们可以将字符串进行分片处理对于A部分,一二三的字符串对应数据分别是6,3,1找出中位数3操作最少的次数就是6-3 +

2021-03-19 20:46:48 166

原创 面向对象程序设计(基于C++)0202 排序去重

题目思路其实本来这个题目在1028. 排序去重 naive中已经给出了基数排序和使用set容器的处理方法但是题目要求使用sort函数和unique_sort()的来解决sort不多说了,在编程思维与实践中说烂了关键在unique_sort()中用法是unique_sort(v1.begin(), v1.end(), v2)其中v1是排好序的容器(因为该函数只能除去相邻的重复数据),v2是新的容器(顺带一提,unique有类似的用法但是 unique函数是把v1其他不重复数据和重复数据交换,

2021-03-19 18:53:47 169

原创 面向对象程序设计(基于C++)0201 栈排序

题目SortUsingStackOnly.cppWrite a function StackSort to sort a stack in ascending order.The following are the only functions that should beused to write this function: push | pop | top | empty.编写一个函数StackSort来按升序对堆栈进行排序。只能使用以下函数:push | pop | top | empt

2021-03-19 18:45:59 299

原创 面向对象程序设计(基于C++)0103 单词出现次数

题目思路首先可以进行长度判断,长度都不一样就不用谈是同一个单词了然后长度相同就逐个比较即可,需要注意开头和结尾的特殊判断代码#include<iostream>#include<string>using namespace std;long long cnt(string & all, string & word){ if(word.length() > all.length()) {return 0;} long

2021-03-19 18:35:39 142

原创 面向对象程序设计(基于C++)0102 输出不同类型的最大最小值

要求ranges.cpp Write a program that outputs the largest and smallest values of the following types:char, wchar_t, short, int, long, float, double,unsigned and long long.编写一个程序,输出以下类型的最大值和最小值:char,wchar,t,short,int,long,float,double,unsigned 和long lo

2021-03-19 18:31:34 416 1

原创 面向对象程序设计(基于C++)0101 输出可输出字符的十进制、十六进制ASCII码

要求characters.cpp Write a program that outputs each printable character in ASCII character set and its integer values in decimal and in hexadecimal.编写一个程序,输出ASCII字符集中的每个可打印字符及其十进制和十六进制整数值。知识点cout << hex << A //将A转换成16进制输出cout << dec

2021-03-19 18:25:03 1017

原创 课后自主练习(字符串)1041. 十六进制 medium《编程思维与实践》个人学习笔记

题目思路用一个双重循环(虽然是双重,但是第二层循环会改变第一层循环的记数值)把输入的字符串从头到尾遍历一遍即可,需要注意的是比较繁琐的if else判断首先是否出现了”0x"其次0x后面是否为有效字符到最后也别忘了-1的特殊输出代码#include<iostream>using namespace std;string hexi = "0123456789abcdef";int main(){ string a; cin >> a;

2021-03-19 07:56:33 163

原创 课后自主练习(字符串)1040. 字符串消除 easy《编程思维与实践》个人学习笔记

题目思路鄙人学疏才浅,只会穷举法写一个递归函数来去掉第一次重复的内容得到新string,然后递归判断是否还有多的重复序列即可然后判断插入我也只能穷举。每一个节点都插个A B C再进行去重。然后计算减少了多少长度。总的复杂度是应该是O(n³)代码#include<iostream>using namespace std;string duplicate(string& a){ int len = a.length(); string b;

2021-03-18 21:29:05 222

原创 课后自主练习(字符串)1039. 字符组合 medium《编程思维与实践》个人学习笔记

题目数据3AabccbaaA注意,这里的排序是要先排好大写字母再排小写。思路排序方面排序用库函数sort qsort都可以,数据量比较小鄙人就使用了基数排序,关键是如何把字符的所有组合都输出,这就需要用到深度优先搜索(DFS)了,这里粗略讲解一下比如排好序的字母是abc,按照题目输出需要以下的操作前三个a,ab,abc输出好了,我们就需要输出ac,这个时候要返回回只有a的情况,让后把b跳过去,直接输出ac于是我们知道,当字符串到末尾的时候就先返回到a的地方,然后把b跳过,再输出c

2021-03-18 16:22:05 172

原创 课后自主练习(字符串)1038. 围栏 naive《编程思维与实践》个人学习笔记

题目数据|||-||–|--|—|-||-|-|-|–||—||-||-||-|–||思路没啥好说的,打卡题注意一下循环结束的时候更新最大长度即可代码#include<iostream>using namespace std;int main(){ string a; cin >> a; int len = a.length(); int enclosure = 1; int count = 1; for(i

2021-03-17 16:19:22 112

原创 课后自主练习(排序)1037. 挑数字 naive《编程思维与实践》个人学习笔记

题目思路(穷举法)先把所有输入的字符排序好然后拿出来其中n-m个最大的数据,让他们依次减去小于该数据且最接近该数据的数值,得到的差累积起来,放在数组中再排序,时间复杂度O(n²)交给OJ的时候发现超时了,所以还得用新的思路代码#include<iostream>#include<algorithm>#define ll long longusing namespace std;bool cmp(ll a,ll b){ return(a > b);

2021-03-17 16:17:00 169

原创 课后自主练习(排序)1036. 计算总步数 naive《编程思维与实践》个人学习笔记

这个题目数据超过ULL你跟我说难度才标naive??很离谱欸??题目数据①24611686018427387904 4611686018427387904-4611686018427387904 -4611686018427387903答案1844674407370955161564数据②10476547951994411748 1722143678163183307-3171840378141948245 -1662717514992828222-55597333221474

2021-03-16 20:35:50 374

iSet的个人实现.zip

配合面向对象程序设计(基于C++)0601 自定义Set iSet.cpp的普通代码,有待完善

2021-04-24

keywords.zip

用于配合【面向对象程序设计(基于C++)0401 从文本中统计单词出现的行数】的测试文本

2021-04-02

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除