| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182 |
- /*
- * quene.c
- *
- *
- * Created by Andrew on 2/5/11.
- * Copyright 2011 UvA. All rights reserved.
- *
- */
- extern void printInt( int val);
- extern void printFloat( float val);
- extern int scanInt( );
- extern float scanFloat( );
- extern void printSpaces( int num);
- extern void printNewlines( int num);
- int[8] x;
- int abs_sub(int i,int j)
- {
- int k;
- if(i>=j)
- k=i-j;
- else
- k=j-i;
- return k;
- }
- void print ()
- {
- int i;
- int j;
- for (int i=0,8)
- {
- for (int j=0,8)
- {
- if (j==x[i])
- {
- printInt(i*10+j);
- printSpaces(3);
- }
- }
- }
- printNewlines(1);
-
- }
- /* tests, whether (ix, iy) is beaten by queens 0...(iy-1) */
- int is_free (int ix, int iy)
- {
- int i;
- int flag=1;
- for (int i=0,iy)
- if ((x[i]==ix) || (abs_sub(x[i],ix)==abs_sub(i,iy)))
- flag= 0;
- return flag;
- }
- /* tries to place queen n on row n */
- void try (int n)
- {
- int i;
- if (n==8) print();
- else
- {
- for (int i=0,8)
- if (is_free(i,n)==1)
- {
- x[n]=i;
- try (n+1);
- }
- }
- }
- export int main()
- {
-
- try(0);
- return 0;
- }
|