Cod sursa(job #1274804)

Utilizator MihailPJack ONeill MihailP Data 24 noiembrie 2014 12:37:41
Problema Loto Scor 0
Compilator c Status done
Runda Arhiva de probleme Marime 1.53 kb
#include <stdio.h>
#include <stdlib.h>
int n,s,v[101],a[101],ok=-1;
FILE *f,*g;

int generare(int x[101])
{

        int i,s1=0;
        for(i=1; i<=n; i++)
            s1=s1+x[i]*v[i];
        if(s1==s)
            return 1;
        return 0;
}
void init(int k)
{
    a[k]=0;
}
int verif(int k)
{
     int suma=0,i;
     if(k==n)
    for(i=1; i<=n; i++)
        suma=suma+a[i];
    for(i=1; i<k; i++)
        if(a[i]==a[k])
            return 0;
    if(suma==6)
    return 1;
    return 0;
}
int sol(int k)
{


    if(k==n)
        return 1;
    return 0;
}
void citire()
{
    f=fopen("loto.in","r");
    g=fopen("loto.out","w");
    fscanf(f,"%d %d",&n,&s);
    int i;
    for(i=1; i<=n; i++)
        fscanf(f,"%d",&v[i]);
}
void afis()
{
    int i,j;
    for(i=1; i<=n; i++)
        for(j=1; j<=a[i]; j++)
        fprintf(g,"%d ",v[i]);
}
void BT()
{
    int k;
    k=1;
    init(k);
    while(k>0)
    {
        if(a[k]<n)
        {
            a[k]++;
            if(verif(k))
                if(sol(k))
                    if(generare(a))
                    {
                        afis();
                        ok=1;
                        break;
                    }
                if(!sol(k))
                {
                    k++;
                    init(k);
                }
        }
        else
            k--;
    }
}

int main()
{
    printf("Hello world!\n");
    citire();
    BT();
    if(ok!=1)
        fprintf(g,"%d",ok);
    return 0;
}