Pagini recente » Cod sursa (job #3279324) | Cod sursa (job #723587) | Cod sursa (job #3278224) | Cod sursa (job #1128796) | Cod sursa (job #109599)
Cod sursa(job #109599)
#include <fstream.h>
int s[100],d[100],n,k,t,o[20],g,u;
char a,b=' ';
void afisare()
{++g; int j;
if(a=='A') if(g==u) for(j=1;j<=n*k;++j){g<<s[j]; g<<b;}
else {for(j=1;j<=n*k;++j) if(s[j]!=d[j]) break;
if(n*k+1==j) g<<g;}
}
int ok(int i)
{int j;
if(s[i]==s[i-1]) return 0;
for(j=1;j<=n;++j) if(o[j]>k) return 0;
return 1;
}
void back(int i)
{int j;
for(j=1;j<=n;++j)
{s[i]=j;
o[j]++;
if(ok(i)) if(i==n*k) afisare();
else back(i+1);
}
}
int main()
{int i,j;
ifstream f("nkperm.in");
ofstream g("nkperm.out");
f>>n>>k>>t;
for(i=1;i<=t;++i)
{f>>a;
if(a=='A') for(j=1;j<=n*k;++j) f>>d[j];
else f>>u;
back(1);
}
return 0;
}