最全算法竞赛入门【码蹄集新手村600题】(MT1351-1400)_马蹄级考试题,插件化框架解读之大数据开发系统服务实现原理

img
img

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

输入格式: 输入为正整数,空格分隔
.
输出格式: 输出为整型

样例1

输入格式: 3 5
.
输出格式: 253

(2)参考代码

#include<bits/stdc++.h> 

using namespace std;

int ack(int m,int n){
    if(m==0) return n+1;
    else if(n==0) return ack(m-1,1);
    else return ack(m-1,ack(m,n-1));
}
int main( )
{
    int m,n;
    cin>>m>>n;
    cout<<ack(m,n)<<endl;
    return 0;
}


18. MT1368 递归法求逆序

(1)题目描述
用递归法求解:将一个四位数(如5678)逆序(如8765)。不考虑不合理的输入等特殊情况。

格式

输入格式: 输入大于0的4位正整数
.
输出格式: 输出为整型

样例1

输入格式: 1234
.
输出格式: 4321

(2)参考代码

#include<bits/stdc++.h> 

using namespace std;

void f(int n){
    if(n==0) return;
    else{
        cout<<n%10;
        f(n/10);
    }
}

int main( )
{
    int n;
    cin>>n;
    f(n);
    return 0;
}


19. MT1369 杨辉三角

(1)题目描述
编写函数输出杨辉三角形

格式

输入格式: 输入为正整数
.
输出格式: 输出为整型

样例1

输入格式: 3
.
输出格式:
1
1 1
1 2 1

(2)参考代码

#include <iostream>
using namespace std;

int num[25][25]={1}; //num[0][0]=1

int main(int argc, char const \*argv[])
{
    int n;
    cin>>n;
    for(int i=1;i<=n;i++){
        for(int j=1;j<=n;j++){
            num[i][j]=num[i-1][j]+num[i-1][j-1];//第i行第j列的值等于第i-1行第j列与第i-1行第j-1列的和
        }
    }
    for(int i=1;i<=n;i++){
        for(int j=1;j<=i;j++){
            cout<<num[i][j];
            if(j<i){
                cout<<" ";
            }
        }
        cout<<endl;
    }
    return 0;
}



20. MT1370 递归函数

(1)题目描述
输入正整数N,递归地对N的位数求和,直到得到一个位数并输出。

格式

输入格式: 输入正整数N
.
输出格式: 输出整型

样例1

输入格式: 1234
.
输出格式: 1

(2)参考代码

#include<bits/stdc++.h> 

using namespace std;

int f(int n){
    int ans=0;
    if(n/10==0) return n;
    else{
        while(n){
            ans+=n%10;
            n/=10;
        }
        return f(ans);
    }
}
int main( )
{
    int n;
    cin>>n;
    cout<<f(n)<<endl;
    return 0;
}


21. MT1371 所有路径

(1)题目描述
输入整型M和N(均大于2小于100),用递归函数计算MxN矩阵从左上角到右下角的所有可能路径(每一步路径只能往下、往右走)。

格式

输入格式: 输入整型M和N,空格分隔。
.
输出格式: 输出整型

样例1

输入格式:3 3
.
输出格式: 6

备注:

结果可能比较大,建议用长整型

(2)参考代码

#include<bits/stdc++.h> 

using namespace std;

long int getPath(long mem[][],int x,int y){
    if(mem[x][y]!=0) return mem[x][y];
    if(x==0&&y!=0){
        mem[x][y] = getPath(mem, x, y-1);
        return mem[x][y];
    }
    if(x!=0&&y==0){
        mem[x][y]=getPath(mem, x-1, y);
        return mem[x][y];
    }
    mem[x][y] = getPath(mem, x-1, y)+getPath(mem, x, y-1);
    return mem[x][y];
}

int main( )
{
    int m,n;
    cin>>m>>n;
    long int mem[m][n];
    mem[0][1]=1;
    mem[1][0]=1;
    getPath(mem, m-1, n-1);
    return 0;
}


小结(二)

经典例题
ACK函数:MT1367
递归法逆序:MT1368
杨辉三角:MT1369
递归求和:MT1370
所有路径:MT1371


22. MT1372 矩阵清零

(1)题目描述
设计一个函数,将NXN的矩阵所有元素替换成0。

格式

输入格式: 第一行输入N (<100),第二行输入数组元素,整型,空格分隔。
.
输出格式: 输出整型矩阵,空格分隔。

样例1

输入格式:
3
1 2 3 4 5 6 7 8 9
.
输出格式:
0 0 0
0 0 0
0 0 0

(2)参考代码

#include<bits/stdc++.h> 

using namespace std;

int main( )
{
    int n,a[105];
    cin>>n;
    for(int i=0;i<n\*n;i++) cin>>a[i];
    for(int i=0;i<n;i++){
        for(int i=0;i<n;i++) cout<<0<<" ";
        cout<<endl;
    }
    return 0;
}


23. MT1373 亲和数

(1)题目描述
A所有的真约数(除自身之外的约数)之和为B,而B所有的真约数之和为A,这样的两个正整数就是亲和数。

输入两个正整数,编写一个函数判断他们是不是亲和数,输出YES或者NO。

格式

输入格式: 输入整型,空格分隔。
.
输出格式: 输出YES或者NO

样例1

输入格式: 220 284
.
输出格式: YES

(2)参考代码

#include<bits/stdc++.h> 

using namespace std;

int getSum(int a){
    int sum=0;
    for(int i=1;i<a;i++){
        if(a%i==0){
            sum+=i;
        }
    }
    return sum;
}
int main( )
{
    int m,n;
    cin>>m>>n;
    if(getSum(m)==n&&getSum(n)==m) cout<<"YES";
    else cout<<"NO";
    return 0;
}


24. MT1374 Pronic数

(1)题目描述
请编写一个函数求m至n之间的所有Pronic数字,如果某个数字是两个连续数字的乘积,则该数字被称为Pronic数。比如6 = 2 x 3,72 = 8 x 9。

输入整数区间,输出区间(含边界)内所有的Pronic数。在主函数中输入m和n,调用函数int PronicNumber(int x)进行判断,再在主函数中输出结果。

不考虑不合理的输入或是溢出等特殊情况。

格式

输入格式: 输入为正整数,空格分隔
.
输出格式: 输出为整型,空格分隔

样例1

输入格式: 1 100
.
输出格式: 2 6 12 20 30 42 56 72 90

(2)参考代码

#include<bits/stdc++.h> 

using namespace std;
typedef long long ll;
int is\_Pronic(int x){
    int i=1;
    while(1){
        ll temp=0;
        temp=i\*(i+1);
        if(temp<x){
            i++;
            continue;
        }
        else if(temp==x) return 1;
        else return 0;
    }
}
int main( )
{
    int n,m;
    cin>>n>>m;
    for(int i=n;i<=m;i++){
        if(is\_Pronic(i)) cout<<i<<" ";
    }
    cout<<endl;
    return 0;
}


25. MT1375 4和7的序列

(1)题目描述
有一个由数字4和7组成的序列,如4,7,44,47,74…44744…等。输入正整数N,编写一个函数,输出第N个数字。

格式

输入格式: 输入正整数N
.
输出格式: 输出整型

样例1

输入格式: 5
.
输出格式: 74

(2)参考代码

#include<bits/stdc++.h> 

using namespace std;
string s;
int len,dp[1000],cnt=0;
bool flag=false;
void getFourAndSevent(){
    for(int i=4;i<=1000000;i++){
        s=to\_string(i);
        len = s.size();
        flag = true;
        for(int j=0;j<len;j++){
            if(s[j]!='4'&&s[j]!='7'){
                flag=false;
                break;
            }
        }
        if(flag) dp[++cnt]=i;

    }
}
int main( )
{
    int n;
    cin>>n;
    getFourAndSevent();
    cout<<dp[n]<<endl;
    return 0;
}


26. MT1376 小码哥的数学

(1)题目描述
小码哥会做100以内的加法,遇到大于等于100的数,小码哥会“聪明”地用最后两位计算,如果计算结果大于等于100,小码哥也只识别最后两位。所以,小码哥认为,134和34是一样的。99+35是等于34的。

输入N组数据,编写函数做加法计算。

不考虑负数等特殊情况。

格式

输入格式: 第一行输入正整数N,后面N行输入数据,空格分隔。
.
输出格式: 输出整型,空格分隔

样例1

输入格式:
2
35 99
15 1152
.
输出格式:
34
67

(2)参考代码

#include<bits/stdc++.h> 

using namespace std;

int doubi(int n,int m){
    n=n+m;
    n=n%100;
    return n;
}
int main( )
{
    int n,a,b;
    cin>>n;
    for(int i=1;i<=n;i++){
        scanf("%d %d",&a,&b);
        cout<<doubi(a, b)<<endl;
    }
    return 0;
}


27. MT1377 模乘逆元

(1)题目描述
给定两个正整数a和m。编写一个函数,找到模’ m’下’ a’的最小模乘逆元b。模乘逆元定义:满足a * b=1 (mod m),称b为a模乘逆元 (b<m)。

注: x=n(mod m)意思是x除以m的余数是n。

格式

输入格式: 输入正整数a和m,空格分隔。
.
输出格式: 输出整型

样例1

输入格式: 3 11
.
输出格式: 4

(2)参考代码

#include<bits/stdc++.h> 

using namespace std;

int getInverse(int a,int m){
    int b=1;
    while(b<=m){
        if((a\*b)%m==1) return b;
        b++;
    }
    return -1;
}
int main( )
{
    int a,m;
    cin>>a>>m;
    cout<<getInverse(a,m)<<endl;
    return 0;
}


28. MT1378 一堆花甲

(1)题目描述
用函数求解:有5只海豚在海边发现一堆花甲,决定第二天来平分。第二天清晨,第一只海豚最早来到,朝海里扔了一只后,恰好可以分成5份,它拿上自己的一份走了。第2,3,4,5只海豚采用了同样的方法,都是扔掉一只后,恰好可以分成5份,然后拿上自己的一份走了。问这堆花甲至少有多少只。

格式

输入格式: 无
.
输出格式: 输出整型

样例1

输入格式: 无
.
输出格式: 3121

(2)参考代码

#include<bits/stdc++.h> 

using namespace std;

int pass(int n){
    if((n-1)%5!=0) return 0;
    return (n-1)/5\*4;
}

int main( )
{
    int number=1;
    bool found=false;
    while(!found){
        int tmp=number;
        for(int i=0;i<5;i++){
            tmp=pass(tmp);
            if(tmp==0) break;
        }
        if(tmp!=0){
            cout<<number;
            found=true;
        }
        number++;
    }
    return 0;
}


29. MT1379 operate函数

(1)题目描述
编写函数operate(int a,int b,char op)。每次调用operate函数时可以实现不同的功能,如计算a和b的和、差。

格式

输入格式: 输入a,op , b,其中a、b为整型,op为+或者-。
.
输出格式: 输出整型

样例1

输入格式: 3+5
.
输出格式: 8

(2)参考代码

#include<bits/stdc++.h> 

using namespace std;

int operate(int a,int b,char op){
    if(op=='+') return a+b;
    else if(op=='-') return a-b;
}
int main( )
{
    int a,b;
    char op;
    cin>>a>>op>>b;
    cout<<operate(a, b, op);
    return 0;
}


30. MT1380 mymath函数

(1)题目描述
编写函数mymath(int a,int b,char op)。每次调用mymath函数时可以实现不同的功能,如a和b的乘、除、求余计算。不考虑不合理的输入等特殊情况。

格式

输入格式: 输入a,op , b,其中a、b为整型,op为*,/或者%。
.
输出格式: 除法输出实型,乘法和求余输出整型

样例1

输入格式: 3/5
.
输出格式: 0.600000

(2)参考代码

#include<bits/stdc++.h> 

using namespace std;

void mymath(int a,int b,char op){
    if(op=='\*') printf("%d",a\*b);
    else if(op=='/') printf("%lf",(double)a/(double)b);
    else if(op=='%') printf("%d",a%b);
}
int main( )
{
    double a,b;
    char op;
    cin>>a>>op>>b;
    mymath(a, b, op);
    return 0;
}


31. MT1381 逆序输出数组

(1)题目描述
定义一个长度为10的整型数组,输入10个数组元素的值,然后逆序输出他们

格式

输入格式: 输入10个数组元素的值,整型,空格分隔
.
输出格式: 逆序输出10个数组元素的值,整型,空格分隔

样例1

输入格式: 1 2 3 4 5 6 7 8 9 10
.
输出格式: 10 9 8 7 6 5 4 3 2 1

(2)参考代码

#include<bits/stdc++.h> 

using namespace std;

int main( )
{
    int a[11];
    for(int i=0;i<10;i++) cin>>a[i];
    for(int i=9;i>=0;i--) cout<<a[i]<<" ";
    return 0;
}


32. MT1382 奇数项

(1)题目描述
定义一个长度为10的整型数组,输入10个数组元素的值,然后输出奇数项。

格式

输入格式: 输入10个数组元素的值,整型,空格分隔
.
输出格式: 输出数组奇数项,整型,空格分隔

样例1

输入格式: 1 2 3 4 5 6 7 8 9 10
.
输出格式: 2 4 6 8 10

(2)参考代码

#include<bits/stdc++.h> 

using namespace std;

int main( )
{
    int a[11];
    for(int i=0;i<10;i++) cin>>a[i];
    for(int i=1;i<=9;i=i+2) cout<<a[i]<<" ";
    return 0;
}


33. MT1383 偶数项和偶数值

(1)题目描述
定义一个长度为10的整型数组,输入10个数组元素的值,如果某一项既是偶数项又是偶数值,输出他。

格式

输入格式: 输入10个数组元素的值,整型,空格分隔
.
输出格式: 输出符合要求的项,整型,空格分隔

样例1

输入格式: 1 2 4 0 5 6 8 7 9 10
.
输出格式: 4 8

(2)参考代码

#include<bits/stdc++.h> 

using namespace std;

int main( )
{
    int a[11];
    for(int i=0;i<10;i++) cin>>a[i];
    for(int i=0;i<=9;i=i+2) if(a[i]%2==0) cout<<a[i]<<" ";
    return 0;
}


34. MT1384 李代桃僵

(1)题目描述
定义一个长度为10的整型数组,输入10个数组元素的值,然后输入要查找的数n,如果找到,把他替换成m

格式

输入格式: 输入整型,分2行输入。第一行输入10个数组元素的值,空格分隔,第二行输入n和m,空格分隔
.
输出格式: 输出替换后的数组元素的值,空格分隔,整型

样例1

输入格式:
1 2 4 0 5 6 8 4 9 10
4 6
.
输出格式: 1 2 6 0 5 6 8 6 9 10

(2)参考代码

#include<bits/stdc++.h> 

using namespace std;

int main( )
{
    int a[11];
    for(int i=0;i<10;i++) cin>>a[i];
    int n,m;
    cin>>n>>m;
    for(int i=0;i<10;i++){
        if(a[i]==n) a[i]=m;
    }
    for(int i=0;i<10;i++) cout<<a[i]<<" ";
    return 0;
}



35. MT1385 查找

(1)题目描述
在一组给定的数据中,找出某个数据是否存在。定义长度为10的数组,输入数组元素,和要查找的数据,如果找到输出下标。没找到则输出No。

格式

输入格式:
第1行输入数组元素,空格分隔
第2行输入要查找的整数n
.
输出格式:输出整型

样例1

输入格式:
1 2 3 4 5 6 7 8 9 10
2
.
输出格式: 1

(2)参考代码

#include<bits/stdc++.h> 

using namespace std;

int main( )
{
    int a[11];
    for(int i=0;i<10;i++) cin>>a[i];
    int n;
    cin>>n;
    for(int i=0;i<10;i++){
        if(a[i]==n){
            cout<<i;
            return 0;
        }
    }
    cout<<"No";
    return 0;
}


36. MT1386 第n个数

(1)题目描述
编写程序读入n (n<200)个整数(输入-9999结束)。找出第1到第n -1个数中第1个与第n个数相等的那个数,并输出该数的序号(序号从1开始)。如果没有,则输出”no such number"。

格式

输入格式: 输入为整型,空格分隔。
.
输出格式: 输出为整型

样例1

输入格式: 1 10 9 1 2 1 3 1 1 -9999
.
输出格式: 1

(2)参考代码

#include<bits/stdc++.h> 

using namespace std;
int dp[10000];
int main( )
{
    int n=1;
    while(1){
       scanf("%d",dp+n);
       if(dp[n]==-9999) break;
       n++;
    }
    for(int i=1;i<n-1;i++){
        if(dp[i]==dp[n-1]){
            cout<<i<<endl;
            return 0;
        }
    }
    cout<<"no such number"<<endl;
    return 0;
}


37. MT1387 删除指定元素

(1)题目描述
定义一个长度为n的整型数组,输入n个数组元素的值,然后输入要删除的数编号,比如删掉从左向右第5个数,输出删除后的数组。

格式

输入格式: 输入整型,分3行输入。第一行输入n,第二行输入n个数组元素的值,空格分隔,第三行输入编号
.
输出格式: 输出整型,空格分隔

样例1

输入格式:
10
1 2 3 4 5 6 7 8 9 10
5
.
输出格式: 1 2 3 4 6 7 8 9 10

(2)参考代码

#include<bits/stdc++.h> 

using namespace std;
int dp[1000];
int main( )
{
    int n,m;
    cin>>n;
    for(int i=1;i<=n;i++) cin>>dp[i];
    cin>>m;
    for(int i=1;i<=n;i++){
        if(i==m) continue;
        cout<<dp[i]<<" ";
    }
    cout<<endl;
    return 0;
}


38. MT1388 指定元素II

(1)题目描述
定义一个长度为n的整型数组,输入n个数组元素的值,然后输入要删除的数,比如删掉5,输出删除后的数组。没有找到5就原样输出。

格式

输入格式:输入整型,分3行输入。第一行输入n,第二行输入n个数组元素的值,空格分隔,第三行输入要删除的数
.
输出格式: 输出整型,空格分隔

样例1

输入格式:
10
1 2 3 4 5 6 7 8 9 10
5
.
输出格式: 1 2 3 4 6 7 8 9 10

(2)参考代码

#include<bits/stdc++.h> 

using namespace std;
int dp[1000];
int main( )
{
    int n,m;
    cin>>n;
    for(int i=1;i<=n;i++) cin>>dp[i];
    cin>>m;
    for(int i=1;i<=n;i++){
        if(dp[i]==m) continue;
        cout<<dp[i]<<" ";
    }
    cout<<endl;
    return 0;
}


39. MT1389 删除

(1)题目描述
输入10个整型元素和一个整数N,对数组进行从小到大排序,再数组中查找N然后删除它,不改变原有的次序,输出删除后的新数组,如果没找到就原样输出。

若新数组没有元素,输出-1。

格式

输入格式: 第一行输入整型数组元素,空格分隔,第二行输入N。
.
输出格式: 输出整型,空格分隔。

样例1

输入格式:
9 8 5 0 4 2 1 5 7 3
1
.
输出格式: 0 2 3 4 5 5 7 8 9

(2)参考代码

#include<bits/stdc++.h> 

using namespace std;
int dp[1000];
int main( )
{
    bool flag=true;
    int m;
    for(int i=1;i<=10;i++) cin>>dp[i];
    sort(dp+1,dp+11);
    cin>>m;
    for(int i=1;i<=10;i++){
        if(dp[i]==m) continue;
        flag=false;
        cout<<dp[i]<<" ";
    }
    if(flag) cout<<-1;
    cout<<endl;
    cout<<endl;
    return 0;
}


40. MT1390 查重

(1)题目描述
定义一个长度为n的整型数组,输入n个数组元素的值,然后删除重复的数,输出删除后的数组

格式

输入格式: 定义一输入整型,分2行输入。第一行输入n,第二行输入n个数组元素的值,空格分隔
.
输出格式: 输出整型,空格分隔

样例1

输入格式:
10
1 2 2 3 4 5 6 7 7 8
.
输出格式:1 2 3 4 5 6 7 8

(2)参考代码

#include<bits/stdc++.h> 

using namespace std;
int cnt,dp[1000],bucket[1000];
bool flag=true;
int del(int a[],int b[],int n){
    cnt=0;
    for(int i=1;i<=n;i++){
        flag=false;
        for(int j=1;j<=cnt;j++){
            if(a[i]==b[j]){
                flag=true;
                break;
            }
        }
        if(!flag) b[++cnt] = a[i];
    }
    return cnt;

}
int main( )
{
    int n,ans;
    cin>>n;
    for(int i=1;i<=n;i++) cin>>dp[i];
    ans=del(dp,bucket,n);
    for(int i=1;i<=ans;i++) cout<<bucket[i]<<" ";
    cout<<endl;
    return 0;
}


小结(三)

典型范例:
亲和数:MT1373


41. MT1391 连续元素

(1)题目描述
删除一个整型数组中的连续相同的元素。

格式

输入格式: 第一行输入数组元素个数N为整型,第二行输入元素,如样例所示。
.
输出格式: 输出为整型

样例1

输入格式:
9
1 1 1 1 2 1 3 1 1
.
输出格式: 1 2 1 3 1

(2)参考代码

#include<bits/stdc++.h> 

using namespace std;

int main( )
{
    int n,a[100],ans[100];
    cin>>n;
    for(int i=0;i<n;i++) cin>>a[i];
    int inserted=0;
    for(int i=0;i<n;i++){
        if(i==0 || ans[inserted-1] !=a[i]){
            ans[inserted++] = a[i];
        }
    }
    for(int i=0;i<inserted;i++) cout<<ans[i]<<" ";
    return 0;
}


42. MT1392 保留一个

(1)题目描述
对整型数组排序,将有序数组中相同的元素仅仅保留一个。

格式

输入格式: 第一行输入数组元素个数N为整型,第二行输入元素,如样例所示。
.
输出格式: 输出为整型

样例1

输入格式:
9
1 1 1 1 2 1 3 1 1
.
输出格式: 1 2 3

备注:

N不大于100

(2)参考代码

#include<bits/stdc++.h> 

using namespace std;

int main( )
{
    int n,a[100],b[100],insert=0;
    bool flag=true;
    cin>>n;
    for(int i=0;i<n;i++) cin>>a[i];
    for(int i=0;i<n;i++){
        flag=false;
        for(int j=0;j<n;j++){
            if(a[i]==b[j]){
                flag=true;
                break;
            }
        }
        if(!flag) b[insert++]=a[i];
    }
    sort(b,b+insert);
    for(int i=0;i<insert;i++) cout<<b[i]<<" ";
    return 0;
}


43. MT1393 重复元素

(1)题目描述
请编写一个简单程序,输入10个整型元素,依次输出重复元素。

格式

输入格式: 输入整型元素,空格分隔。
.
输出格式: 输出整型,空格分隔。

样例1

输入格式: 9 8 5 0 4 2 1 5 7 1
.
输出格式: 5 1

(2)参考代码

#include<bits/stdc++.h> 

using namespace std;

int dp[15],bucket[15];

int main( )
{
    for(int i=1;i<=10;i++){
        cin>>dp[i];
        bucket[dp[i]]++;
    }
    for(int i=1;i<=10;i++){
        if(bucket[dp[i]]>=2){
            cout<<dp[i]<<" ";
            bucket[dp[i]] = 0;
        }
    }
    cout<<endl;
    return 0;
}


44. MT1394 元素频次

(1)题目描述
请编写一个简单程序,输入10个整型元素,输出数组中每个元素出现的次数。

格式

输入格式: 输入整型,空格分隔。
.
输出格式: 依次输出元素频次,每个一行。

样例1

输入格式: 9 8 5 0 4 2 1 5 7 1
.
输出格式:
9 1
8 1
5 2
0 1
4 1
2 1
1 2
7 1

(2)参考代码

#include<bits/stdc++.h> 

using namespace std;

int dp[15],flag[15],cnt=0;

int main( )
{
    for(int i=1;i<=10;i++){
        cin>>dp[i];
    }
    for(int i=1;i<=10;i++){
       if(flag[i]==1) continue;
       cnt=1;
       for(int j=i+1;j<=10;j++){
           if(dp[i]==dp[j]){
               cnt++;
               flag[j]=1;
           }
       }
       cout<<dp[i]<<" "<<cnt<<endl;
    }
    cout<<endl;
    return 0;
}


45. MT1395 统计

(1)题目描述
统计一个整型数组中不同元素出现的次数。

格式

输入格式: 第一行输入数组元素个数N为整型,第二行输入元素,如样例所示。
.
输出格式: 输出为整型,前面是元素,后面是出现的次数,每种一行。

样例1

输入格式:
9
1 1 1 1 2 1 3 1 1
.
输出格式:
1 7
2 1
3 1

备注:

N<500

(2)参考代码

#include<bits/stdc++.h> 

using namespace std;

int dp[15],flag[15],cnt=0;

int main( )
{
    int n;
    cin>>n;
    for(int i=1;i<=n;i++){
        cin>>dp[i];
    }
    for(int i=1;i<=n;i++){
       if(flag[i]==1) continue;
       cnt=1;
       for(int j=i+1;j<=n;j++){
           if(dp[i]==dp[j]){
               cnt++;
               flag[j]=1;
           }
       }
       cout<<dp[i]<<" "<<cnt<<endl;
    }
    cout<<endl;
    return 0;
}


46. MT1396 排序吧

(1)题目描述
定义一个长度为n的整型数组,输入n个数组元素的值,然后输出从小到大排序后数组元素。

格式

输入格式: 输入整型,分2行输入。第一行输入n,第二行输入n个数组元素的值,空格分隔
.
输出格式: 输出整型,空格分隔

样例1

输入格式:
5
3 4 2 1 6
.
输出格式: 1 2 3 4 6

备注:

N不大于100

(2)参考代码

#include<bits/stdc++.h> 

using namespace std;

int main( )
{
    int n,a[100];
    cin>>n;
    for(int i=0;i<n;i++) cin>>a[i];
    sort(a,a+n);
    for(int i=0;i<n;i++) cout<<a[i]<<" ";
    return 0;
}


47. MT1397 选择排序

(1)题目描述
输入10个整型元素,对数组进行选择排序,输出从小到大排序后的新数组。

格式

输入格式: 输入整型,空格分隔。
.
输出格式: 输出整型,空格分隔。

样例1

输入格式: 9 8 5 0 4 2 1 5 7 1
.
输出格式: 0 1 1 2 4 5 5 7 8 9

(2)参考代码

#include<bits/stdc++.h> 

using namespace std;

int main( )
{
    int a[100];
    for(int i=0;i<10;i++) cin>>a[i];
    sort(a,a+10);
    for(int i=0;i<10;i++) cout<<a[i]<<" ";
    return 0;
}


48. MT1398 插入排序

(1)题目描述

img
img

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

是元素,后面是出现的次数,每种一行。

样例1

输入格式:
9
1 1 1 1 2 1 3 1 1
.
输出格式:
1 7
2 1
3 1

备注:

N<500

(2)参考代码

#include<bits/stdc++.h> 

using namespace std;

int dp[15],flag[15],cnt=0;

int main( )
{
    int n;
    cin>>n;
    for(int i=1;i<=n;i++){
        cin>>dp[i];
    }
    for(int i=1;i<=n;i++){
       if(flag[i]==1) continue;
       cnt=1;
       for(int j=i+1;j<=n;j++){
           if(dp[i]==dp[j]){
               cnt++;
               flag[j]=1;
           }
       }
       cout<<dp[i]<<" "<<cnt<<endl;
    }
    cout<<endl;
    return 0;
}


46. MT1396 排序吧

(1)题目描述
定义一个长度为n的整型数组,输入n个数组元素的值,然后输出从小到大排序后数组元素。

格式

输入格式: 输入整型,分2行输入。第一行输入n,第二行输入n个数组元素的值,空格分隔
.
输出格式: 输出整型,空格分隔

样例1

输入格式:
5
3 4 2 1 6
.
输出格式: 1 2 3 4 6

备注:

N不大于100

(2)参考代码

#include<bits/stdc++.h> 

using namespace std;

int main( )
{
    int n,a[100];
    cin>>n;
    for(int i=0;i<n;i++) cin>>a[i];
    sort(a,a+n);
    for(int i=0;i<n;i++) cout<<a[i]<<" ";
    return 0;
}


47. MT1397 选择排序

(1)题目描述
输入10个整型元素,对数组进行选择排序,输出从小到大排序后的新数组。

格式

输入格式: 输入整型,空格分隔。
.
输出格式: 输出整型,空格分隔。

样例1

输入格式: 9 8 5 0 4 2 1 5 7 1
.
输出格式: 0 1 1 2 4 5 5 7 8 9

(2)参考代码

#include<bits/stdc++.h> 

using namespace std;

int main( )
{
    int a[100];
    for(int i=0;i<10;i++) cin>>a[i];
    sort(a,a+10);
    for(int i=0;i<10;i++) cout<<a[i]<<" ";
    return 0;
}


48. MT1398 插入排序

(1)题目描述

[外链图片转存中…(img-mE7sJsNq-1715807817759)]
[外链图片转存中…(img-0kG91X9f-1715807817760)]

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

  • 16
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值