数据结构上机测试试题【数据结构】

大数加法 

#include<iostream>
#include<string.h>
using namespace std;
int a[10005],b[10005];
char s1[10005],s2[10005];
int main(){
    while(cin>>s1>>s2){
        memset(a,0,sizeof(a));
        memset(b,0,sizeof(b));
        int l1=strlen(s1),l2=strlen(s2);
        int k=l1>l2?l1:l2;
        for(int i=l1-1;i>=0;i--){
            a[l1-1-i]=s1[i]-'0';
        }
        for(int i=l2-1;i>=0;i--){
            b[l2-1-i]=s2[i]-'0';
        }
        for(int i=0;i<=k;i++){
            a[i]+=b[i];
            if(a[i]>9){
                a[i]-=10;
                a[i+1]++;
            }
        }
        if(a[k]){
            for(int i=k;i>=0;i--) cout<<a[i];
        }
        else{
            for(int i=k-1;i>=0;i--) cout<<a[i];
        }
        cout<<endl;
    }
    return 0;
}

斐波那契数列

#include<iostream>
using namespace std;
typedef long long ll;
ll a[10005];
int fibo(int n){//递归
    if(n==1 || n==2) return 1;
    else return fibo(n-1)+fibo(n-2);
}
ll Fibo(int n){//非递归打表
    a[1]=a[2]=1;
    for(int i=3;i<=10000;i++){
        a[i]=a[i-1]+a[i-2];
    }
    return a[n];
}
int main(){
    int n;
    while(cin>>n){
        cout<<fibo(n)<<' '<<Fibo(n)<<endl;
    }
    return 0;
}

进制转化

#include<iostream>
#include<string>
#include<algorithm>
using namespace std;
string ch(int n){
    string s="";
    while(n){
        s+=n%2+'0';
        n/=2;
    }
    reverse(s.begin(),s.end());
    return s;
}
int main(){
    int n;
    while(cin>>n){
        cout<<ch(n)<<endl;
    }
    return 0;
}

快排

#include<iostream>
using namespace std;
int a[10005];
void QSort(int a[],int  l,int r){
    if(l<r){
        int i=l,j=r,temp=a[l];
        while(i<j){
            while(i<j&&a[j]>=temp) j--;
            if(i<j) a[i++]=a[j];
            while(i<j&&a[i]<temp) i++;
            if(i<j) a[j--]=a[i];
        }
        a[i]=temp;
		QSort(a,l,i-1);
		QSort(a,i+1,r);
    }

}
int main(){
    int n;cin>>n;
    for(int i=1;i<=n;i++) cin>>a[i];
    QSort(a,1,n);
    for(int i=1;i<=n;i++) cout<<a[i]<<' ';
    cout<<endl;
    return 0;
}

直接插入排序

#include<iostream>
using namespace std;
int a[10005];
void InsertSort(int n){
    int j;
    for(int i=2;i<n;i++){
        if(a[i]<a[i-1]){
            a[0]=a[i];
            for(j=i-1;a[j]>a[0];j--)
                a[j+1]=a[j];
            a[j+1]=a[0];
        }
    }
}
int main(){
    int n;cin>>n;
    for(int i=1;i<=n;i++) cin>>a[i];
    InsertSort(n);
    for(int i=1;i<=n;i++) cout<<a[i]<<' ';
    cout<<endl;
    return 0;
}

简单选择排序

#include<iostream>
using namespace std;
int a[10005];
void SelectSort(int n){

}
int main(){
    int n;cin>>n;
    for(int i=1;i<=n;i++) cin>>a[i];
    SelectSort(n);
    for(int i=1;i<=n;i++) cout<<a[i]<<' ';
    cout<<endl;
    return 0;
}

猜你喜欢

转载自blog.csdn.net/qq_41333844/article/details/85172695