• 个人简介

    手撕栈的模板

    #include <bits/stdc++.h>
    using namespace std;
    int arr[1000];
    int top;//顶
    bool empty() {
    	return top==0;
    }
    void push(int x) {
    	arr[++top]=x;
    }
    int getTop() {
    	return arr[top];
    }
    void pop() {
    	top--;
    }
    int size() {
    	return top;
    }
    int main() {
    	push(9);
    	push(37);
    	cout<<getTop()<<endl;
    	pop();
    	cout<<getTop()<<endl;
    
    	return 0;
    }
    

    栈的模板(标准)

    #include <bits/stdc++.h>
    using namespace std;
    int main() {
      stack<int> stk1,stk2;
      stk1.push(1);//入栈
      stk1.empty();//栈空
      stk1.pop();//出栈
      stk1.size();//返回栈的元素个数
      stk1.top();//返回栈顶元素
      return 0;
    }  
    

    手搓冒泡排序

    #include <bits/stdc++.h>
    using namespace std;
    int n,arr[10009],x;
    int main() {
    	cin>>n;
    	for(int i=1; i<=n; i++) {
    		cin>>arr[i];
    	}
    	for(int i=1; i<=n-1; i++) {
    		for(int j=2; j<=n; j++) {
    			if(arr[j]>arr[j-1]) {
    				swap(arr[j],arr[j-1]);
    			}
    		}
    	}
    	for(int i=1; i<=n; i++) {
    		cout<<arr[i]<<' ';
    	}
    	return 0;
    }
    

    结构体排序

    #include <bits/stdc++.h>
    using namespace std;
    int n;
    struct node {
    	int a,b,c,num;
    };
    node arr[50009];
    bool cmp(node a,node b) {
    	if(a.c !=b.c ) {
    		return a.c>b.c;
    	}
    	return a.a<b.a;
    }
    int main() {
    	cin>>n;
    	for(int i=1; i<=n; i++) {
    		cin>>arr[i].a>>arr[i].b;
    		arr[i].c =(arr[i].a+arr[i].b)*2;
    		arr[i].num =i;
    	}
    	sort(arr+1,arr+n+1,cmp);
    	for(int i=1; i<=n; i++) {
    		cout<<arr[i].num<<' ';
    	}
    	return 0;
    }
    

    队列模板

    #include <bits/stdc++.h>
    #include <queue>
    using namespace std;
    int main() {
    
    	que.push(1);//入队
    	que.pop();//出队
    	que.front();//队头
    	que.back(); //队尾
    	que.size();//元素个数
    	que.empty();//队空
    	return 0;
    }
    

    高精度模板

    #include <bits/stdc++.h>
    using namespace std;
    string s1,s2;
    int arr[9999],brr[9999],crr[9999];
    int main() {
    	cin>>s1>>s2;
    	int lena=s1.size();
    	for(int i=0; i<lena; i++) {
    		arr[i]=s1[lena-1-i]-'0';
    	}
    	int lenb=s2.size();
    	for(int i=0; i<lenb; i++) {
    		brr[i]=s2[lenb-1-i]-'0';
    	}
    	int jw=0,sum=0;
    	int lenc=max(lena,lenb);
    	for(int i=0; i<lenc; i++) {
    		sum=arr[i]+brr[i]+jw;
    		crr[i]=sum%10;
    		jw=sum/10;
    	}
    	if(jw>0){
    		crr[lenc]=1;
    		lenc++;
    	}
    	
    	for(int i=lenc-1; i>=0; i--) {
    		cout<<crr[i];
    	}
    	return 0;
    }
    

    A+B-C Problem(高精度)

    #include <iostream>
    #include <cstring> 
    using namespace std;
    int c[10001]={},s[10020],jf;
    int a[50000],b[50000],a2[10020]={},b2[10020]={};
    char a1[50001]={},b1[10001]={},c1[10001]={},d1[10001]={},d[10020]={};	
    void jiafa(char a1[],char b1[]){
    	int lena=strlen(a1);
    	int lenb=strlen(b1);
    	for(int i=0;i<lena;i++) a[i]=a1[lena-i-1]-'0';
    	for(int i=0;i<lenb;i++) b[i]=b1[lenb-i-1]-'0';
    	int lenc=max(lena,lenb);
    	for(int i=0;i<lenc;i++)
    	{
    		c[i]+=a[i]+b[i];
    		if(c[i]>9)
    		{
    			c[i+1]++;
    			c[i]=c[i]%10;
    		}
    	}
    	if(c[lenc]==1){
    		for(int i=lenc;i>=0;i--){
    			d1[jf++]=char(c[i]+48);
    		}
    	}else{
    		for(int i=lenc-1;i>=0;i--){
    			d1[jf++]=char(c[i]+48);
    		}
    	}
    }
    void jian(char d1[],char c1[]){
    	int lena=strlen(d1);
    	int lenb=strlen(c1); 
    	if(lena<lenb || (lena==lenb && strcmp(d1,c1)<0))
    	{
    		strcpy(d,c1);
    		strcpy(c1,d1);
    		strcpy(d1,d);
    		cout<<"-";
    		lena=strlen(d1);
    		lenb=strlen(c1); 
    	} 
    	for(int i=0;i<lena;i++) a2[i]=d1[lena-i-1]-'0';
    	for(int i=0;i<lenb;i++) b2[i]=c1[lenb-i-1]-'0'; 
    	for(int i=0;i<lena;i++)
    	{
    		s[i]=a2[i]-b2[i]-s[i];
    		if(s[i]<0) 
    		{
    			s[i+1]++;
    			s[i]+=10;
    		} 
    	} 
    	int t=lena-1;
    	while(s[t]==0 && t>0)
    	{
    		t--;
    	}
    	for(int i=t;i>=0;i--) cout<<s[i]; 
    }
    int main()
    {
    	cin>>a1>>b1>>c1;
    	jiafa(a1,b1);
    	jian(d1,c1);
    	return 0;
    }
    

    A*B Problem

    #include <bits/stdc++.h> 
    using namespace std;
    char s1[1009],s2[1009];
    int arr[1009],brr[1009],crr[20000000];
    int main() {
    	cin>>s1>>s2;
    	int len1=strlen(s1);
    	int len2=strlen(s2);
    	if(s1[0]=='0'||s2[0]=='0'){
    		cout<<"0";
    		return 0;
    	}
    	
    	for(int i=len1-1; i>=0; i--) {
    		arr[len1-i-1]=s1[i] - '0';
    	}
    	for(int i=len2-1; i>=0; i--) {
    		brr[len2-i-1]=s2[i] - '0';
    	}
    	for(int i=0; i<len1; i++) {
    		for(int j=0; j<len2; j++) {
    			crr[i+j]+=arr[i]*brr[j];
    			crr[i+j+1]+=crr[i+j]/10;
    			crr[i+j]=crr[i+j]%10;
    		}
    	}
    	int t=len1+len2;
    	while(crr[t]==0) {
    		t--;
    	}
    	for(int i=t; i>=0; i--) {
    		cout<<crr[i];
    	}
    	return 0;
    }
    
  • 通过的题目

  • 最近活动

    This person is lazy and didn't join any contests or homework.

题目标签

初窥门径
2
顺序结构
2
略有小成
1
1