Cod sursa(job #667407)

Utilizator handz.FMI Andrei Tanasescu handz. Data 23 ianuarie 2012 00:13:28
Problema Dirichlet Scor 8
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.14 kb
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("dirichlet.in");
ofstream g("dirichlet.out");

int n,stiva[20],count=0;

void ini_date()
{
    int i;
    f>>n;
    for(i=0; i<=n ;i++)
    {
        stiva[i]=0;
    }
}

int valid_1(int p)
{
    int i,s=0;
    for(i=1; i<=p ;i++)
    {
        s+=stiva[i];
    }
    if(s==p)
    {
        return 2;
    }
    else
    {
        if(s<p)
        {
            return 1;
        }
        else
        {
            return 0;
        }
    }
}

int valid_2(int p)
{
    int i,s=0;
    for(i=1; i<=p ;i++)
    {
        s+=stiva[i];
    }
    if(s==n)
    {
        return 1;
    }
    else
    {
        return 0;
    }
}

void BKT(int p)
{
    int pval;
    if(p==n+1)
    {
        if(valid_2(p-1))
        {
            count++;
        }
    }
    else
    {
        for(pval=0; pval<=p ;pval++)
        {
            stiva[p]=pval;
            if(valid_1(p))
            {
                BKT(p+1);
            }
        }
    }
}

int main()
{
    ini_date();
    BKT(1);
    g<<count;
    return 0;
}