Poz,
Rjesavam treci zadatak koji je bio na infokupu ove godine na skolskom natjecanju. Moje rjesenje radi samo ako je broj auta 1, ali trebalo bi i za ostale brojeve, al nikako ne mogu naci gresku ._.
Moj kod:
#include <cstdlib>
#include <iostream>
#include <string>
using namespace std;
int p,k,l;
string s, sZvjezdice;
int najmanji(int l)
{
int maxi=-1,maxiPos=-1;
int sum=0;
for(int i=0;i<p-(l-1);++i)
{
sum=0;
for(int j=i;j<i+l;++j)
{
if(sZvjezdice[j]=='.')
{
//cout<<'.';
++sum;
}
}
//cout << sum << endl;
if(sum>maxi)
{
maxi=sum;
maxiPos=i;
}
}
return maxiPos;
}
void postaviNaZvjezdice(int i,int n)
{
for(int ii=i;ii<n+i;++ii)
{
sZvjezdice[ii]='#';
}
}
void postaviNaTockice(int i,int n)
{
for(int ii=i;ii<n+i;++ii)
{
s[ii]='.';
}
}
bool provjera()
{
int br=0;
int kk=0;
for(int i=0;i<s.size();++i)
{
if(br>=l)
{
br=0;
++kk;
}
if(s[i]=='.')
{
++br;
}
}
//cout << 'k' << 'k' << kk << endl << 'k' << k << endl;
if(kk>=k)
return 1;
return 0;
}
int main(int argc, char *argv[])
{
cin>>p>>k>>l;
cin>>s;
sZvjezdice=s;
int rjesenje=0;
for(;1;)
{
if(provjera())
{
break;
}
int najm = najmanji(l);
//cout << najm << endl;
postaviNaTockice(najm,l);
postaviNaZvjezdice(najm,l);
//cout << s << endl;
++rjesenje;
}
cout << s << endl;
//cout << sZvjezdice << endl;
cout << rjesenje;
cout << endl;
system("PAUSE");
return 0;
}
U potprogramu 'provjera' na kraju kod usporedbe kk sa k bi mozda mogla biti greska, al mozda i negdje drugdje.
LP