C++编程

Posted 彭祥.

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C++编程相关的知识,希望对你有一定的参考价值。

计数排序

前缀和

统计字符

#include <iostream>
#include <cstdio>
using namespace std;
int cnt[26];
int main()
	freopen("count.in","r",stdin);
	freopen("count.out","w",stdout);
	string s;
	cin>>s;
	for(int i=0;i<s.size()-1;i++)
		if('A'<=s[i]&&s[i]<='Z')
			cnt[s[i]-'A']++;
		else
			cnt[s[i]-'a']++;
		
	 
	int max=0,index;
	for(int i=0;i<26;i++)
		if(cnt[i]>max)
			max=cnt[i];
			index=i;
		
	
	cout<<max<<" "<<(char)(index+'A');
	return 0;

越野比赛


#include<iostream>
#include<cstdio>
using namespace std;
long long d[100005],sum[100005];
int main()
	freopen("hike.in","r",stdin);
	freopen("hike.out","w",stdout);
	int n,k;
	scanf("%d%d",&n,&k);
	for(int i=1;i<n;i++)
		scanf("%lld",&d[i]);
	
	
	for(int i=1;i<n;i++)
		sum[i]=sum[i-1]+d[i];
	
	
	int a,b;
	for(int i=0;i<k;i++)
		scanf("%d%d",&a,&b);
		printf("%lld ",sum[b-1]-sum[a-1]);
	
	return 0;
 

多项式


#include<iostream>
#include<cstdio>
using namespace std;
int in_num[4],in_index[4],out_num[4],out_index[4];
int main()
	freopen("mul.in","r",stdin);
	freopen("mul.out","w",stdout);
	int a,b;
	for(int i=0;i<4;i++)
		cin>>a>>b;
		in_num[i]=a;
		in_index[i]=b;
	
	out_num[0]=in_num[0]*in_num[2];
	out_num[1]=in_num[0]*in_num[3];
	out_num[2]=in_num[1]*in_num[2];
	out_num[3]=in_num[1]*in_num[3];
	out_index[0]=in_index[0]+in_index[2];
	out_index[1]=in_index[0]+in_index[3];
	out_index[2]=in_index[1]+in_index[2];
	out_index[3]=in_index[1]+in_index[3];
	
	for(int i=0;i<4;i++)
		for(int j=i+1;j<4;j++)
			if(out_index[i]==out_index[j])
				out_num[i]=out_num[i]+out_num[j];
				out_index[j]=0;
				out_num[j]=0;
			
		
	 
	int  temp,temps;
	for(int i=0;i<4;i++)
		for(int j=i+1;j<4;j++)
			if(out_index[j]>out_index[i])
				temp=out_index[i];
				out_index[i]=out_index[j];
				out_index[j]=temp;
				temps=out_num[i];
				out_num[i]=out_num[j];
				out_num[j]=temps;
			
		
	 
	
	for(int i=0;i<4;i++)
		if(out_num[i]!=0)
			cout<<out_num[i]<<" "<<out_index[i]<<endl;
		
	 
	return 0;
 


四平方和定理,又称为拉格朗日定理:每个正整数都可以表示为至多 44 个正整数的平方和。如果把 00 包括进去,就正好可以表示为 44 个数的平方和。

#include<iostream>
#include<cstdio>
#include<cmath>
using namespace std;
int main()
    freopen("square.in","r",stdin);
    freopen("square.out","w",stdout);
    int N;
    cin>>N;
    for(int i=0;i<N;i++)
    	if(i*i>N)break;
        for(int j=0;j<N;j++)
        	if(j*j>N)break;
            for(int k=0;k<N;k++)
            	if(k*k>N)break;
            	double m=sqrt(N-i*i-j*j-k*k); 
                if(int(m)==m)
                    cout<<i<<" "<<j<<" "<<k<<" "<<m<<endl;
                    return 0;
                
            
        
    
    return 0;
 

装饰效果


#include<iostream>
#include<cstdio>
#include<algorithm>
using namespace std;
int main()
    freopen("sum.in","r",stdin);
    freopen("sum.out","w",stdout);
    int n,a[1005]=0;
    int max1=0,sum=0;
    cin>>n;
    for(int i=1;i<=n;i++)
        cin>>a[i];
    
    for(int i=1;i<=n;i++)
        for(int j=i;j<=n;j++)
            sum+=a[j];
            if(sum>max1)
            	max1=sum;
			
          
		sum=0;
    
    cout<<max1;
    return 0;

奖券数目

有些人很迷信数字,比如认为带 4 的数不吉利。某抽奖活动的奖券号码是 55 位数 (10000-99999)(1000099999),要求其中不要出现带“4”的号码,主办方想让你计算一下,如果发行号码 n 到 m 之间的奖券,在任何两张奖券都不重复的情况下,可以发行多少张?
#include<iostream>
#include<cstdio>
using namespace std;
int main()
    freopen("ticket.in","r",stdin);
    freopen("ticket.out","w",stdout);
    int n,m,cnt=0;
    cin>>n>>m;
    for(int i=n;i<=m;i++)
        int a=i/10000;
        int b=i/1000%10;
        int c=i/100%10;
        int d=i/10%10;
        int e=i%10;
        if(a!=4&&b!=4&&c!=4&&d!=4&&e!=4)
            cnt++;
    
        cout<<cnt;
    return 0;

#include<iostream>
#include<cstdio>
#include<cmath>
using namespace std;
int main()
    freopen("len.in","r",stdin);
    freopen("len.out","w",stdout);
    int n,L[105];
    int min=10001;
    cin>>n;
    for(int i=1;i<=n;i++)
        cin>>L[i];
    
    for(int i=1;i<n;i++)//定位置 
        for(int j=i+1;j<=n;j++)//移动遍历 
            int cha=abs(L[j]-L[i]);
            if(cha<min)
                min=cha;
            
            
    
    cout<<min;
    return 0;

北极圈远征

在征服南极之后,Davor 开始了一项新的挑战。下一步是在西伯利亚、格林兰、挪威的北极圈远征。需要一共筹集 n 元钱。他打算在每个星期一筹集 x 元,星期二筹集 x+k  x+2k 元,……,星期日筹集 x+6k 元,并在 52 个星期内筹集完。其中 x,k 为正整数,并且满足 1<x<  100  1≤x≤100。

现在请你帮忙计算 x,k 为多少时,能刚好筹集 n元。
#include<iostream>
#include<cstdio>
using namespace std;
int main()
    freopen("money.in","r",stdin);
    freopen("money.out","w",stdout);
    int n;
    cin>>n;
    for(int i=1;i<=n;i++)
         for(int j=1;j<n;j++)
             int sum=52*(21*i+7*j);
             if(sum==n&&1<=j&&j<=100)
                 cout<<j<<endl<<i;
                 return 0;
             
           
    
    return 0;



#include <iostream>
#include <fstream>

using namespace std;

const int N  = 100;

int matrix[N + 1][N + 1], rowsum[N + 1][N + 1];
int m, n, i, j, first, last, area, ans;

int main()

	freopen("submatrix.in","r",stdin);
    freopen("submatrix.out","w",stdout);
	cin >> m >> n;
	
	for (i = 1; i <= m; i++)
		for (j = 1; j <= n; j++)
			cin >> matrix[i][j];
	
	ans = matrix[1][1];                          // 左上角第一个点 
	for (i = 1; i <= m; i++) rowsum[i][0] = 0;   //  原题这个地方有换行,造成阅读诱导 
	
	for (i = 1; i <= m; i++)
		for (j = 1; j <= n; j++)
			rowsum[i][j] = rowsum[i][j - 1] + matrix[i][j]; //每一行做一个前缀和
	
	for (first = 1C++多线程编程

怎样学好C++编程语言

C++ 之父:C++ 是一切的无形基础,透露编程语言生存 40 年秘诀

现代C++函数式编程

C++核心编程

c++编程用啥软件好