C++/PAT/洛谷OJ
是三水不是泗水
只是个笔记本
展开
-
剑指offer63_数据流中查找中位数(堆排序实现)
后备知识:make_heap(first ,last)make_heap(first ,last, cmpObject)将[ first, last )范围进行堆排序,cmpobject默认使用less < int>(大顶堆),小顶堆为greater<int>。pop_heap(first ,last)pop_heap(first ,last, cmpObject)将front(即第一个最大元素)移动到end的前部(堆删除),同时将剩下的元素重新构造成(堆原创 2020-09-01 14:14:39 · 169 阅读 · 0 评论 -
剑指offer59和60题,打印二叉树
//之字形打印二叉树,栈+队列,根节点设为第0层/*struct TreeNode { int val; struct TreeNode *left; struct TreeNode *right; TreeNode(int x) : val(x), left(NULL), right(NULL) { }};*/class Solution {public: vector<vector<int> .原创 2020-08-31 19:51:01 · 106 阅读 · 0 评论 -
剑指offer_37变形的二分法
题目描述统计一个数字在升序数组中出现的次数。class Solution {public: int GetNumberOfK(vector<int> data ,int k) { int first=binaryseachfirst(data,0,data.size()-1,k); int last=binaryseachlast(data,0,data.size()-1,k); if(first==-1&&.原创 2020-08-26 14:13:10 · 150 阅读 · 0 评论 -
剑指offer35_归并排序求逆序对
题目描述在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。输入一个数组,求出这个数组中的逆序对的总数P。并将P对1000000007取模的结果输出。 即输出P%1000000007输入描述:题目保证输入的数组中没有的相同的数字数据范围:对于%50的数据,size<=10^4对于%75的数据,size<=10^5对于%100的数据,size<=2*10^5示例1输入复制1,2,3,4,5,6,7,0输出.原创 2020-08-26 11:44:47 · 112 阅读 · 0 评论 -
剑指offer29_topK问题快排方式解决
题目描述输入n个整数,找出其中最小的K个数。例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4。class Solution {public: vector<int> GetLeastNumbers_Solution(vector<int> input, int k) { vector<int> res; if(input.size()<=0) return res; ...原创 2020-08-25 14:11:37 · 117 阅读 · 0 评论 -
剑指offer27_字符串全排列加字母序排列
输入一个字符串,按字典序打印出该字符串中字符的所有排列。例如输入字符串abc,则按字典序打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba。class Solution {public: set<string> res;//set去重加排序 void swap(vector<char>& a,int x,int y){//交换char数组中的元素位置,参数引用 char temp=a[x];原创 2020-08-25 11:18:51 · 126 阅读 · 0 评论 -
替换空格
题目描述请实现一个函数,将一个字符串中的每个空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。class Solution {public: void replaceSpace(char *str,int length) { string st=str;//char*转为string string temp; for(int i=0;i<st.length();i++)原创 2020-08-19 16:48:50 · 118 阅读 · 0 评论 -
回溯题解方法
学好算法全靠套路,认准 labuladong 就够了。读完本文,你不仅学会了算法套路,还可以顺便去 LeetCode 上拿下如下题目:78.子集46.全排列77.组合-----------今天就来聊三道考察频率高,而且容易让人搞混的算法问题,分别是求子集(subset),求排列(permutation),求组合(combination)。这几个问题都可以用回溯算法模板解决,同时子集问题还可以用数学归纳思想解决。读者可以记住这几个问题的回溯套路,就不怕搞不清了。PS:我认真写了转载 2020-07-29 10:47:14 · 360 阅读 · 0 评论 -
华为笔试第二题4/29
#include<bits/stdc++.h>using namespace std;string s;set<string> st;vector<int> vt;int k;int visit[101]={};vector<vector<int> > allvec;string erasestr(vector<i...原创 2020-04-30 15:56:00 · 209 阅读 · 0 评论 -
DFS实现全排列,同时剪枝求解TSP问题
#include<bits/stdc++.h>using namespace std;#define MAX 1000int visit[MAX]={};double minlen=10000000;int n;vector<vector<int> > permute; vector<int> vec;vector<pair&...原创 2020-04-29 15:48:57 · 591 阅读 · 0 评论 -
C++后台服务器开发/网络编程学习路线
Module01 - Linux系统基础 由于本系列课程基于Linux(或UNIX),熟悉Linux操作系统是必要的前提。 该模块的课程包含以下方面的内容:常用Unix/Linux命令 熟悉文件管理、文本处理、进程管理、网络、系统管理等各个方面大约100个常用的命令。 深入了解bash 了解Linux默认shell: bash 的语法、命令执行、I/O重定向、任务控制等。...原创 2019-10-12 09:44:18 · 2337 阅读 · 1 评论 -
C++虚函数和纯虚函数的注意事项
1)纯虚函数声明如下:virtual void function()=0;纯虚函数一定没有定义,用来规范派生类的行为,即接口。包含纯虚函数的类是抽象类,抽象类不能定义实例,但是可以声明指向该抽象类的具体类的指针或者引用;2)虚函数声明:virtual void function(。。。);虚函数必须实现,如果不实现的话编译器将会报错;3)对于虚函数,基类和继承类各有各的版本,由多态方式调用转载 2016-12-25 10:34:43 · 1814 阅读 · 0 评论 -
类型转换
1)static_cast:最常用的的类型转换符,在正常状况下的类型转换,比如把int转换为float:int i;float f;f=static_cast(i);2)const_cast:用于取出const属性,把const类型的指针变为非const类型的指针:const int* fun(int x,int y){};int* ptr=const_cast(f转载 2016-12-25 12:10:21 · 321 阅读 · 0 评论 -
虚函数/构造函数/析构函数
1、构造不设为虚函数的原因:虚函数:意思就是开启动态绑定,程序会根据对象的动态类型来选择要调用的方法;在构造函数运行的时候对象的动态类型还不完整,没办法确定是什么类型,所以构造函数不可以进行动态绑定;动态绑定是根据对象的动态类型而不是函数名,在调用构造函数之前,这个对象根本不存在,又何从谈起动态绑定??2、析构函数设为虚函数的作用:在类的继承中,如果有指针指向派生类,那么用基类转载 2016-12-25 13:44:46 · 888 阅读 · 0 评论 -
PAT1003
#include#include#include#includeusing namespace std;bool check(char q[]){ int count_p=0,count_t=0,count_a=0,pos_p,pos_t,len; char a[100]; strcpy(a,q); len=strlen(a); for(int i=0;i<len;i++){原创 2017-03-27 16:49:08 · 369 阅读 · 1 评论 -
PAT1004(basic)
#include#include#include#includeusing namespace std;struct node{ char name[15]; char id[15]; int score;};int main(){ #ifdef ONLINE_JUDGE #else freopen("in.txt","r",stdin); freopen("out.原创 2017-03-27 19:32:32 · 232 阅读 · 0 评论 -
PAT1005(BASIC)
好气呀,还有几个测试点没过,晚上回去再看看==#include#includeusing namespace std;int cmp(const void* a,const void* b){ if(*(int*)a>*(int*)b){ return 0; } else{ return 1; }}int main(){ int n,tmp; scanf("%d原创 2017-03-28 13:52:20 · 247 阅读 · 0 评论 -
PAT1006basic
#include#includeint main(){ int x; scanf("%d",&x); for(int i=x/100;i>0;i--){ printf("B"); } x=x%100; for(int i=x/10;i>0;i--){ printf("S"); } x=x%10; for(int i=1;i<=x;i++){原创 2017-03-28 18:00:03 · 194 阅读 · 0 评论 -
PAT1007basic
#include#includebool isprime(int a){ int i=0; if(a<=2){ return true; }else{ for(i=2;i<=sqrt(a);i++){ if(!(a%i)){ return false; }else{ continue; } } if(i>sqrt(a)){ retu原创 2017-03-28 18:43:39 · 262 阅读 · 1 评论 -
PAT1008BASIC
#includeint main(){ int n,m; int i,j; int s[101]={0}; scanf("%d %d",&n,&m); for(i=0;i<n;i++){ scanf("%d",&s[i]); } int temp=0; for(i=0;i<m;i++){ temp=s[n-1]; for(j=n-2;j>=0;j--){ s[原创 2017-03-29 10:35:57 · 157 阅读 · 0 评论 -
1009
#includeint main(){int num=0;char ans[90][90];while(scanf("%s",ans[num])!=-1){num++;}for(int i=num-1;i>=0;i--){printf("%s",ans[i]);if(i>0)printf(" ");}return 0;}注意:%s和%c的转载 2017-03-29 11:28:16 · 193 阅读 · 0 评论 -
PAT1010basic
#includeint main(){ int n,p,cnt=0; while((scanf("%d%d",&n,&p))!=EOF){ if(n==0&&p==0){ printf("0 0"); } if(n!=0&&p!=0&&cnt==0){ printf("%d %d",n*p,p-1); cnt++; }else if(n!=0&&p!=0&原创 2017-03-29 19:44:24 · 157 阅读 · 0 评论 -
algorithm(set)
set是一个内部自动有序并且不含重复元素的容器。可以用set保留元素本身而不用考虑它的个数;加入set之后客户已实现自动排序;首先要想使用set就要加上set头文件:#include;还需要在头文件下面加上一句:using namespace std;1、set的定义:set name;其定义和vector基本一样,或者说大部分STL都是这样定义的,这里面的typename原创 2017-03-24 14:58:39 · 450 阅读 · 0 评论 -
字符串逆序存放
#include#include#includeusing namespace std;void reverse(char a[]);int main(){ char a[100]; gets(a); reverse(a); puts(a); return 0;}void reverse(char a[]){ int n=0; char b[100]; n=str原创 2017-07-13 11:31:31 · 416 阅读 · 0 评论 -
按照从小到大的顺序输出字符串
codeup上的题是错的!!!mdzz浪费lz好长时间原创 2017-07-13 14:26:13 · 328 阅读 · 0 评论 -
将十个数中的最小值放在第一位,最大值放在最后一位,用三个函数实现(注意cin输入数组的方式)
#include#include#includeusing namespace std;int _max(int *p){ int index=0; for(int i=0;i<10;i++){ if(*(p+index)<*(p+i)) index=i; } return index;}int _min(int *p){ int index=0; for(int原创 2017-07-13 16:57:14 · 3179 阅读 · 0 评论 -
gets()和scanf的区别
gets()不识别空格,即空格也作为字符串的一部分输入;而scanf则识别空格、回车、TAB键作为结束;#include#include#includeusing namespace std;struct student { int num; char name[20]; char sex; int age;};int main(){ stud原创 2017-07-13 18:43:05 · 229 阅读 · 0 评论 -
联合体在结构体中的用法(用小数点而不能用->表示联合体中的元素);可以直接将单个字符传递给另一个char变量,而不用strcpy
#include#include#includeusing namespace std;struct node{ int num; char name[10]; char sex; char job; union { int classes; char position[10]; }category;};i原创 2017-07-13 19:31:05 · 399 阅读 · 0 评论 -
剩下的树
#include#include#includeusing namespace std;int main(){ int L,M; cin>>L>>M; while(L!=0&&M!=0){ int s[10000]={}; for(int i=0;i<=L;i++){ s[i]=1; } for(int j=0;j<M;j++){ int node1=0,node原创 2017-07-14 10:36:28 · 301 阅读 · 0 评论 -
A+B(while和if搞混了...)
问题 B: A+B时间限制: 1 Sec 内存限制: 32 MB献花: 98 解决: 76[献花][花圈][TK题库]题目描述给定两个整数A和B,其表示形式是:从个位开始,每三位数用逗号","隔开。现在请计算A+B的结果,并以正常形式输出。输入输入包含多组数据数据,每组数据占一行,由两个整数A和B组成(-10^9 输出请计原创 2017-07-14 14:42:36 · 323 阅读 · 0 评论 -
判断奇数偶数的时候用%而不是/
#include#include#include#include#includeusing namespace std;int main(){ int n=0; while(scanf("%d",&n)!=EOF){ int count=0; for(int i=0;i<n;i++){ int a=0; cin>>a; //scanf("%lf",&a);原创 2017-07-14 15:19:30 · 769 阅读 · 0 评论 -
最短路径(shortest distance)
#include#include#include#include#includeusing namespace std;struct node{ int num; int length;};int main(){ node* a; a=(node*)malloc(100000*sizeof(node)); int n=0; cin>>n; int sum=0; fo原创 2017-07-14 15:54:16 · 512 阅读 · 0 评论 -
锤子剪子布
题目描述大家应该都会玩“锤子剪刀布”的游戏:两人同时给出手势,胜负规则如图所示:现给出两人的交锋记录,请统计双方的胜、平、负次数,并且给出双方分别出什么手势的胜算最大。输入输入第1行给出正整数N(5),即双方交锋的次数。随后N行,每行给出一次交锋的信息,即甲、乙双方同时给出的的手势。C代表“锤子”、J代表“剪刀”、B代表“布”,第1个字母原创 2017-07-21 17:14:13 · 305 阅读 · 0 评论 -
sort with swap
1067. Sort with Swap(0,*) (25)时间限制150 ms内存限制65536 kB代码长度限制16000 B判题程序Standard作者CHEN, YueGiven any permutation of the numbers {原创 2017-09-25 21:49:58 · 180 阅读 · 0 评论 -
broken keyboard
1084. Broken Keyboard (20)时间限制200 ms内存限制65536 kB代码长度限制16000 B判题程序Standard作者CHEN, YueOn a broken keyboard, some of the keys are原创 2017-09-18 17:59:22 · 468 阅读 · 0 评论 -
cut integer
1132. Cut Integer (20)时间限制400 ms内存限制65536 kB代码长度限制16000 B判题程序Standard作者CHEN, YueCutting an integer means to cut a K digits lon原创 2017-09-18 22:12:04 · 525 阅读 · 0 评论 -
1010 radix
1010. Radix (25)时间限制400 ms内存限制65536 kB代码长度限制16000 B判题程序Standard作者CHEN, YueGiven a pair of positive integers, for example, 6 an原创 2017-09-27 13:20:37 · 187 阅读 · 0 评论 -
string subtraction
1050. String Subtraction (20)时间限制100 ms内存限制65536 kB代码长度限制16000 B判题程序Standard作者CHEN, YueGiven two strings S1 and S2, S = S1 - S原创 2017-09-19 17:59:30 · 355 阅读 · 0 评论 -
二分法/参考算法笔记
1048. Find Coins (25)时间限制100 ms内存限制65536 kB代码长度限制16000 B判题程序Standard作者CHEN, YueEva loves to collect coins from all over the un原创 2017-09-20 13:05:06 · 516 阅读 · 0 评论 -
pat甲级1044
1044. Shopping in Mars (25)时间限制100 ms内存限制65536 kB代码长度限制16000 B判题程序Standard作者CHEN, YueShopping in Mars is quite a different exp原创 2017-09-28 19:04:05 · 207 阅读 · 0 评论