Pagini recente » Cod sursa (job #935278) | Cod sursa (job #1391824) | Cod sursa (job #633648) | Cod sursa (job #1604837) | Cod sursa (job #1363119)
#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();
}