ACM-ICPC基本算法之递归法

222 阅读1分钟

image-20200715145012846

image-20200715145027550

#include <iostream>
using namespace std;
int cow(int n)
{
    if(n<=4)
        return n;
    else
        return cow(n-1)+cow(n-3);
}
int main()
{
    int n;
    cin >> n;
    cout << cow(n) << endl;
    return 0;
}

image-20200715145339061

#include <iostream>
using namespace std;
void digit(int n)
{
    if(n < 10)
        cout << n << " ";
    else
    {
        digit(n/10);
        cout << n % 10 << " ";
    }
}
int main()
{
    int n;
    cin >> n;
    digit(n);
    cout << endl;
    return 0; 
}

image-20200715145814033

#include <iostream>
using namespace std;
double maximum(double a[],int n)
{
    int i;
    double max;
    if (n == 1)
        return a[0];
    max = maximum(a,n-1);
    if(max < a[n-1])
        max = a[n-1];
    return max;
}
int main()
{
    int i,n;
    double a[100],max;
    cin >> n; 
    for(i=0;i<n;i++)
        cin >> a[i];
    printf("%.2f\n",maximum(a,n));
    return 0;
}

image-20200715150521613

#include <iostream>
#define MOD 10000007
using namespace std;
long long power(int x,int n)
{
    long long ans;
    if(n == 0) ans = 1;
    else
    {
        ans = power(x,n/2);
        ans = ans * ans % MOD;
        if(n%2 == 1) ans = ans * x % MOD;
    }
    return ans % MOD;
}
int main()
{
    int x,n;
    cin >> x >> n;
    cout << power(x,n) << endl;
    return 0;
}

image-20200715151102740

#include <iostream>
using namespace std;
void rev(int a[],int i,int j)
{
    int temp;
    if(i<j)
    {
        temp = a[i];
        a[i] = a[j];
        a[j] = temp;
        rev(a,i+1,j-1);
    }
}
int main()
{
    int i,n,a[100];
    cin >> n;
    for(i=0;i<n;i++)
        cin >> a[i];
    rev(a,0,n-1);
    for(i=0;i<n;i++)
        cout << a[i] << " ";
    cout << endl;
    return 0;
}

image-20200715151718095

#include <iostream>
using namespace std;
int m;
void hanoi(int n,char A,char B,char C)
{
    if(n == 1)
        m++;
    else
    {
        hanoi(n-1,A,C,B);
        m++;
        hanoi(n-1,B,A,C);
    }
}
int main()
{
    int n;
    char A,B,C;
    cin >> n;
    m = 0;
    hanoi(n,'A','B','C');
    cout << m << endl;
    return 0;
}