Pagini recente » Cod sursa (job #305226) | Cod sursa (job #2314317) | Cod sursa (job #731811) | Cod sursa (job #23799) | Cod sursa (job #1368144)
#include <cstdlib>
#include <fstream>
using namespace std;
int n,k,st[1004];
bool viz[1004],d1[2010],d2[2010];
inline void Citire()
{
ifstream fin("dame.in");
fin>>n;
fin.close();
}
inline void Afisare()
{
int i;
ofstream fout("dame.out");
fout<<n<<"\n";
for(i=1;i<=n;++i)
fout<<i<<" "<<st[i]<<"\n";
fout.close();
exit(0);
}
inline bool Valid(int x,int k)
{
if(viz[x]==1) return false;
if(d1[n+x-k]==1) return false;
if(d2[x+k-1]==1) return false;
return true;
}
inline void Back(int k)
{
int i;
//cout<<k<<"\n";
if(k==n+1)
Afisare();
else
for(i=1;i<=n;++i)
if(Valid(i,k))
{
st[k]=i;
viz[i]=1;
d1[n+i-k]=1;
d2[i+k-1]=1;
Back(k+1);
viz[i]=0;
d1[n+i-k]=0;
d2[i+k-1]=0;
}
}
int main()
{
Citire();
Back(1);
return 0;
}