第一次考试题解

T1

数字配对

 

 

#include<iostream>
#include<iomanip>
#include<cstdio>
#include<cmath>
#include<cstring>
#include<string>
#include<algorithm>
using namespace std;
int n,num[10001],m,a[5001];
int main(){
    cin>>n;
    m=n/2;
    for(int i=1;i<=n;i++)cin>>num[i];//正常输入
    sort(num + 1,num+n+1);//排个序
    int max=num[1];//存放ans
    for (int i=1;i<=m;i++)
      if(num[i]+num[n-i+1]>=max){
          max=num[i]+num[n-i+1];
      }
    cout<<max<<endl;//末尾换行
    return 0;
}

 

T2

 

选票统计

 

 

#include<iostream>
#include<iomanip>
#include<cstdio>
#include<cmath>
#include<cstring>
#include<string>
#include<algorithm> using namespace std; long long bj,n,shu; long long a[10005]; int main(){ scanf("%lld",&n); for(int i=0;i<n;i++){ cin>>a[i]; } sort(a,a+n); for(int i=0;i<n;i++){ if(a[i]!=a[i-1]){ if(shu>n/4) { cout<<a[i-1]<<endl; bj=1; } shu=1; }else{ shu++; } } if(shu>n/4){ cout<<a[n-1]<<endl; bj=1; } if(bj==0){ cout<<"No such person."<<endl; } return 0; }

 

T3

成绩单

这个题没什么好说的,就是多注意细节

#include<iostream>
#include<iomanip>
#include<cstdio>
#include<cmath>
#include<cstring>
#include<string>
#include<algorithm>
using namespace std;
int n,k[17];
string h[130001];
struct Per{
    string name;
    int num;
};Per p[130001];
int cmp(Per a,Per b){
    return a.name<b.name;
}
int main(){
    cin>>n;
    for (int i=0;i<n;i++)
      cin>>p[i].name>>p[i].num;
    sort(p,p+n,cmp);
    for (int i=0;i<n;i++){
        if (p[i].num>=1&&p[i].num<=9)
          k[1]++;
        else if (p[i].num >= 10 && p[i].num <= 19)
          k[2] ++;
        else if (p[i].num >= 20 && p[i].num <= 29)
          k[3] ++;
        else if (p[i].num >= 30 && p[i].num <= 39)
          k[4] ++;
        else if (p[i].num >= 40 && p[i].num <= 49)
          k[5] ++;
        else if (p[i].num >= 50 && p[i].num <= 59)
          k[6] ++;
        else if (p[i].num >= 60 && p[i].num <= 69)
          k[7] ++;
        else if (p[i].num >= 70 && p[i].num <= 79)
          k[8] ++;
        else if (p[i].num >= 80 && p[i].num <= 89)
          k[9] ++;
        else if (p[i].num >= 90 && p[i].num <= 99)
          k[10] ++;
        else if (p[i].num >= 100 && p[i].num <= 109)
          k[11] ++;
        else if (p[i].num >= 110 && p[i].num <= 119)
          k[12] ++;
        else if (p[i].num >= 120 && p[i].num <= 129)
          k[13] ++;
        else if (p[i].num >= 130 && p[i].num <= 139)
          k[14] ++;
        else if (p[i].num >= 140 && p[i].num <= 149)
          k[15] ++;
        else if (p[i].num == 150)
          h[k[16] ++] = p[i].name;
    }
    cout<<"1~9 10~19 20~29 30~39 40~49 50~59 60~69 70~79 80~89 90~99 100~109 110~119 120~129 130~139 140~149\n";
    for(int i=1;i<=14;i++)
      cout<<k[i]<<" ";
    cout<<k[15]<<endl;
    for(int i=0;i<n;i++)
      cout<<p[i].name<<" "<<p[i].num<<endl;
    cout<<k[16]<<endl;
    if (k[16]==0)
      cout<<"No\n";
    else
      for(int i=0;i<k[16];i++)cout<<h[i]<<endl;
    return 0;
}

T4

 

字符串的修改

#include<iostream>
#include<iomanip>
#include<cstdio>
#include<cmath>
#include<cstring>
#include<string>
#include<algorithm> using namespace std; long long dp[1005][1005],ac,bc,bj; char a[1005],b[1005]; int main(){ cin>>a+1>>b+1; ac=strlen(a+1); bc=strlen(b+1); for(int i=1;i<=ac;i++){//切记初始化 dp[i][0]=0; } for(int i=1;i<=bc;i++){ dp[0][i]=i; } for(int i=1;i<=ac;i++){ for(int j=1;j<=bc;j++){ if(a[i]==b[j]){ bj=0; }else{ bj=1; } dp[i][j]=min(dp[i-1][j-1]+bj,min(dp[i][j-1]+1,dp[i-1][j]+1)); } } cout<<dp[ac][bc]<<endl; return 0; }

 

posted @ 2020-05-12 22:37  快乐老家远征军  阅读(119)  评论(0编辑  收藏  举报