Cod sursa(job #1363119)

Utilizator raduzxstefanescu radu raduzx Data 26 februarie 2015 18:43:41
Problema A+B Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.36 kb
#include <fstream>
#include <cstring>
/*
alta varianta:
cautam pentru fiecare cifra in parte, si pentru fiecare numar de la 1 la k cifra maxima la care poate sa ajunga*/
using namespace std;
bool v[11][11];
int l,uc,maxim,k1;
ifstream f("concurs.in");
    ofstream g("concurs.out");
void cautare(int c,int ck);
void gasit(int i,int ck)
{
    if(ck>0)
    {
        cautare(i,ck-1);
    }
}
void cautare(int c,int ck)
{
    int i;
    for(i=0;i<=9;i++)
    {
        if(v[c][i]==1)
        {
            if(maxim==i)
            {
                if(k1<ck)
                    k1=ck-1;
            }
            else
                if(maxim<i)
            {
                maxim=i;
                k1=ck-1;
            }
            //gasit(i,ck);
            if(ck>1)
                cautare(i,ck-1);
        }
    }
   // g<<c<<" "<<ck<<" "<<maxim<<" "<<k1<<'\n';
}

int main()
{

    int n,k,i,j,poz,ci,ki;
    char s[1004];
    f>>n;
    f>>k;
    f.get();
    f.getline(s,1003);
    for(i=0;i<=9;i++)
        for(j=0;j<=9;j++)
            f>>v[i][j];
    l=strlen(s);
    poz=0;
    while(poz<l and k!=0)
    {
        uc=s[poz]-'0';
        ci=uc;
        k1=k;
        maxim=ci;
        cautare(uc,k);
        s[poz]=char(maxim+48);
        k=k1;
        poz+=1;
    }
    g<<s;
    f.close();
    g.close();
}