Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <fstream>
- #include <cstdlib>
- using namespace std;
- int i,v[20],n,k;
- ofstream g("permutari.out");
- void init(int k)
- {
- v[k]=0;
- }
- int succesor(int k)
- {
- if(v[k]<n)
- {
- v[k]++;
- return 1;
- }
- return 0;
- }
- int valid(int k)
- {
- for(i=1;i<k;i++)
- if(v[i]==v[k] || abs(i-k)==abs(v[i]-v[k]))
- return 0;
- return 1;
- }
- int solutie(int k)
- {
- if(k==n) return 1;
- return 0;
- }
- void afisare()
- {
- for(i=1;i<=n;i++)
- {
- for(int j=1;j<=n;j++)
- if(v[i]==j) g<<"* ";
- else g<<"- ";
- g<<endl;
- }
- g<<endl;
- }
- void back(int k)
- {
- int sem,sev;
- k=1;
- init(k);
- while(k>0)
- {
- sem=0;
- sev=0;
- if(k<=n)
- do {
- sem=succesor(k);
- if(sem) sev=valid(k);
- }while(sem&&!sev);
- if(sem)
- {
- if(solutie(k)) afisare();
- else
- {
- k++;
- init(k);
- }
- }
- else k--;
- }
- }
- int main()
- {
- cin>>n;
- back(n);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement