Szczegółowe omówienie zadania Zabawa Bajtka:
Link do powyższego omówienia zadania Zabawa Bajtka:
https://youtu.be/DsYaobsHhSk?t=4947
Omawia Jasiek Strzeszyński – zwycięzca Olimpiady Informatycznej Juniorów i złoty medalista Europejskiej Olimpiady Informatycznej Juniorów
–
Link do zadania:
https://szkopul.edu.pl/problemset/problem/zabawa/site/
–
Link do zadania:
https://szkopul.edu.pl/problemset/problem/zabawa/site/
Zadanie jest analogicznym zadaniem do zadania Liczby Pechowe z XIV Olimpiady Informatycznej Juniorów:
–
Zadanie wymaga generacji wszystkich możliwości (backtracking) i wyboru tych które spełniają warunki zadania.
——-
Poniżej kod wzorcowy do zadania użyty w powyższym omówieniu który otrzymuje 100%:
–
#include<bits/stdc++.h>
#define fi first
#define se second
#define pb push_back
using namespace std;
int n,k,w;
string s,akt;
void solve(int mi,int mx)
{
int i,j;
for(i=0;i+s.size()-1<akt.size();i++)
{
for(j=0;j<s.size();j++) { if(s[j]!=akt[i+j]) break; } if(j>=s.size())
{
w++;
break;
}
}
if(akt.size()==n)
return;
for(char c=max('a',(char)(mx-k));c<=min('z',(char)(mi+k));c++) { akt+=c; solve(min(mi,(int)c),max(mx,(int)c)); akt.pop_back(); } return; } int main() { ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); cin>>n>>k>>s;
for(char c='a';c<='z';c++)
{
akt=c;
solve(c,c);
}
cout<<w<<"\n";
return 0;
}