亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? usaco 1_5_4 checker challenge 題解_leokan的blog.mht

?? 美國USACO題庫源程序
?? MHT
?? 第 1 頁 / 共 5 頁
字號:
<DIV class=3Dtit>USACO 1.5.4 Checker Challenge =CC=E2=BD=E2</DIV>
<DIV class=3Ddate>2008=C4=EA01=D4=C227=C8=D5 =D0=C7=C6=DA=C8=D5 =
01:07</DIV>
<TABLE style=3D"TABLE-LAYOUT: fixed">
  <TBODY>
  <TR>
    <TD>
      <DIV class=3Dcnt>
      <DIV align=3Dleft>
      <H2>USACO 1.5.4 Checker Challenge</H2>
      <DIV class=3Dt_msgfont>
      <P>Checker Challenge<BR>Examine the 6x6 <SPAN class=3Dt_tag=20
      href=3D"tag.php?name=3Dcheck">check</SPAN>erboard below and note =
that the six=20
      <SPAN class=3Dt_tag href=3D"tag.php?name=3Dcheck">check</SPAN>ers =
are arranged=20
      on the board so that one and only one is placed in each row and =
each=20
      column, and there is never more than one in any diagonal. =
(Diagonals run=20
      from southeast to northwest and southwest to northeast and include =
all=20
      diagonals, not just the major two.) <BR><BR><BR>&nbsp;&nbsp; =
&nbsp;&nbsp;=20
      Column<BR>1 2 3 4 5 6<BR>&nbsp;&nbsp; =
-------------------------<BR>1 | | O=20
      | | | | |<BR>&nbsp;&nbsp; -------------------------<BR>2 | | | | O =
| |=20
      |<BR>&nbsp;&nbsp; -------------------------<BR>3 | | | | | | O=20
      |<BR>&nbsp;&nbsp; -------------------------<BR>4 | O | | | | |=20
      |<BR>&nbsp;&nbsp; -------------------------<BR>5 | | | O | | |=20
      |<BR>&nbsp;&nbsp; -------------------------<BR>6 | | | | | O |=20
      |<BR>&nbsp;&nbsp; -------------------------<BR><BR>The solution =
shown=20
      above is described by the sequence 2 4 6 1 3 5, which gives the =
column=20
      positions of the checkers for each row from 1 to 6: <BR><BR>ROW 1 =
2 3 4 5=20
      6 <BR>COLUMN 2 4 6 1 3 5 <BR><BR>This is one solution to the =
checker=20
      challenge. Write a program that finds all unique solution =
sequences to the=20
      Checker Challenge. Print the solutions using the column notation =
described=20
      above. Print the the first three solutions in numerical order, as =
if the=20
      queen positions form the digits of a large number, and then a line =
with=20
      the total number of solutions. <BR><BR>Special note: the larger =
values of=20
      N require your program to be especially efficient. Do not =
precalculate the=20
      value and print it (or even find a formula for it); that's =
cheating. Work=20
      on your program until it can solve the problem properly. If you =
insist on=20
      cheating, your login to the <SPAN class=3Dt_tag=20
      href=3D"tag.php?name=3DUSACO">USACO</SPAN> training pages will be =
removed and=20
      you will be disqualified from all <SPAN class=3Dt_tag=20
      href=3D"tag.php?name=3DUSACO">USACO</SPAN> competitions. YOU HAVE =
BEEN WARNED.=20
      <BR><BR>TIME LIMIT: 1 CPU second<BR>PROGRAM NAME: checker<BR>INPUT =

      FORMAT<BR>A single line that contains a single integer N (6 =
&lt;=3D N &lt;=3D=20
      13) that is the dimension of the N x N checkerboard. <BR>SAMPLE =
INPUT=20
      (file checker.in) <BR>6<BR><BR>OUTPUT FORMAT<BR>The first three =
lines show=20
      the first three solutions found, presented as N numbers with a =
single=20
      space between them. The fourth line shows the total number of =
solutions=20
      found. <BR>SAMPLE OUTPUT (file checker.out)<BR>2 4 6 1 3 5<BR>3 6 =
2 5 1=20
      4<BR>4 1 5 2 6 3<BR>4<BR><BR><BR><BR>Checker=20
      Challenge<BR><BR>=CC=F8=C6=E5=B5=C4=CC=F4=D5=BD<BR><BR>=D2=EB =
by&nbsp;&nbsp;=20
      Jeru<BR><BR><BR><BR>=BC=EC=B2=E9=D2=BB=B8=F6=C8=E7=CF=C2=B5=C46 x=20
      =
6=B5=C4=CC=F8=C6=E5=C6=E5=C5=CC=A3=AC=D3=D0=C1=F9=B8=F6=C6=E5=D7=D3=B1=BB=
=B7=C5=D6=C3=D4=DA=C6=E5=C5=CC=C9=CF=A3=AC=CA=B9=B5=C3=C3=BF=D0=D0=A3=AC=C3=
=BF=C1=D0=A3=AC=C3=BF=CC=F5=B6=D4=BD=C7=CF=DF(=B0=FC=C0=A8=C1=BD=CC=F5=D6=
=F7=B6=D4=BD=C7=CF=DF=B5=C4=CB=F9=D3=D0=B6=D4=BD=C7=CF=DF)=C9=CF=B6=BC=D6=
=C1=B6=E0=D3=D0=D2=BB=B8=F6=C6=E5=D7=D3=A1=A3=20
      <BR><BR><BR>=C1=D0=BA=C5<BR>1 2 3 4 5 =
6<BR>-------------------------<BR>1 | | O | |=20
      | | |<BR>-------------------------<BR>2 | | | | O | |=20
      |<BR>-------------------------<BR>3 | | | | | | O=20
      |<BR>-------------------------<BR>4 | O | | | | |=20
      |<BR>-------------------------<BR>5 | | | O | | |=20
      |<BR>-------------------------<BR>6 | | | | | O |=20
      =
|<BR>-------------------------<BR><BR>=C9=CF=C3=E6=B5=C4=B2=BC=BE=D6=BF=C9=
=D2=D4=D3=C3=D0=F2=C1=D02 4 6 1 3=20
      =
5=C0=B4=C3=E8=CA=F6=A3=AC=B5=DAi=B8=F6=CA=FD=D7=D6=B1=ED=CA=BE=D4=DA=B5=DA=
i=D0=D0=B5=C4=CF=E0=D3=A6=CE=BB=D6=C3=D3=D0=D2=BB=B8=F6=C6=E5=D7=D3=A3=AC=
=C8=E7=CF=C2=A3=BA <BR><BR>=D0=D0=BA=C5 1 2 3 4 5 6 <BR>=C1=D0=BA=C5 2 4 =
6 1 3 5=20
      =
<BR><BR>=D5=E2=D6=BB=CA=C7=CC=F8=C6=E5=B7=C5=D6=C3=B5=C4=D2=BB=B8=F6=BD=E2=
=A1=A3=C7=EB=B1=E9=D2=BB=B8=F6=B3=CC=D0=F2=D5=D2=B3=F6=CB=F9=D3=D0=CC=F8=C6=
=E5=B7=C5=D6=C3=B5=C4=BD=E2=A1=A3=B2=A2=B0=D1=CB=FC=C3=C7=D2=D4=C9=CF=C3=E6=
=B5=C4=D0=F2=C1=D0=B7=BD=B7=A8=CA=E4=B3=F6=A1=A3=BD=E2=B0=B4=D7=D6=B5=E4=CB=
=B3=D0=F2=C5=C5=C1=D0=A1=A3=C7=EB=CA=E4=B3=F6=C7=B03=B8=F6=BD=E2=A1=A3=D7=
=EE=BA=F3=D2=BB=D0=D0=CA=C7=BD=E2=B5=C4=D7=DC=B8=F6=CA=FD=A1=A3=20
      <BR><BR>=CC=D8=B1=F0=D7=A2=D2=E2: =
=B6=D4=D3=DA=B8=FC=B4=F3=B5=C4N(=C6=E5=C5=CC=B4=F3=D0=A1N x=20
      =
N)=C4=E3=B5=C4=B3=CC=D0=F2=D3=A6=B5=B1=B8=C4=BD=F8=B5=C3=B8=FC=D3=D0=D0=A7=
=A1=A3=B2=BB=D2=AA=CA=C2=CF=C8=BC=C6=CB=E3=B3=F6=CB=F9=D3=D0=BD=E2=C8=BB=BA=
=F3=D6=BB=CA=E4=B3=F6=A3=AC=D5=E2=CA=C7=D7=F7=B1=D7=A1=A3=C8=E7=B9=FB=C4=E3=
=BC=E1=B3=D6=D7=F7=B1=D7=A3=AC=C4=C7=C3=B4=C4=E3=B5=C7=C2=BDUSACO =
Training=B5=C4=D5=CA=BA=C5=BD=AB=B1=BB=CE=DE=BE=AF=B8=E6=C9=BE=B3=FD=20
      <BR><BR>PROGRAM NAME: checker<BR><BR>INPUT =
FORMAT<BR>=D2=BB=B8=F6=CA=FD=D7=D6N (6 &lt;=3D N=20
      &lt;=3D 13) =B1=ED=CA=BE=C6=E5=C5=CC=CA=C7N x =
N=B4=F3=D0=A1=B5=C4=A1=A3 <BR><BR>SAMPLE INPUT(checker.in)=20
      <BR>6<BR><BR>OUTPUT =
FORMAT<BR>=C7=B0=C8=FD=D0=D0=CE=AA=C7=B0=C8=FD=B8=F6=BD=E2=A3=AC=C3=BF=B8=
=F6=BD=E2=B5=C4=C1=BD=B8=F6=CA=FD=D7=D6=D6=AE=BC=E4=D3=C3=D2=BB=B8=F6=BF=D5=
=B8=F1=B8=F4=BF=AA=A1=A3=B5=DA=CB=C4=D0=D0=D6=BB=D3=D0=D2=BB=B8=F6=CA=FD=D7=
=D6=A3=AC=B1=ED=CA=BE=BD=E2=B5=C4=D7=DC=CA=FD=A1=A3=20
      <BR><BR>SAMPLE OUTPUT(checker.out)<BR>2 4 6 1 3 5 <BR>3 6 2 5 1 4 =
<BR>4 1=20
      5 2 6 3 <BR>4</P>
      <HR>

      <P></P></DIV>
      <P><STRONG>USACO 1.5.4 Checker=20
      =
Challenge<BR>=CC=E1=BD=BB=B4=CE=CA=FD=A3=BA1=B4=CE=A3=A8=BA=CD=D6=AE=C7=B0=
=B5=C4=B5=CD=D0=A7=C2=CA=B3=CC=D0=F2=B6=D4=B1=C8=D5=FD=C8=B7=B2=C5=CC=E1=BD=
=BB=B5=C4=A3=A9<BR><BR>=C1=E8=B3=BF1=B5=E3......<BR>=D5=E2=CC=E2=D3=C3=CE=
=BB=D4=CB=CB=E3=D7=F6=A3=AC=D6=AE=C7=B0=CA=C7=C0=ED=C2=DB=A3=AC=B4=D3=C0=ED=
=C2=DB=B5=BD=CA=B5=BC=F9=BB=A8=C1=CB=B2=BB=C9=D9=CA=B1=BC=E4=A3=AC=B5=AB=D6=
=C1=C9=D9=B2=BB=BF=B4=A1=B0m67=A1=B1=B5=C4=CE=BB=D4=CB=CB=E3=CB=B5=C3=F7=CF=
=C2=D7=F6=B5=BD=C1=CB=A1=A3<BR><BR>=D3=C3=C8=FD=B8=F6=CA=FD=C0=B4=B1=ED=CA=
=BE3=D6=D6=B9=A5=BB=F7=B7=BD=CA=BD=B5=C4=B1=BB=B9=A5=BB=F7=B5=BD=B5=C4=CE=
=BB=D6=C3=A3=AC=C1=ED=CD=E2=BA=E1=B5=C4=C4=C7=D2=BB=D6=D6=B9=A5=BB=F7=B7=BD=
=CA=BD=D3=C9=D3=DA=CA=C7dfs=A3=AC=C3=BF=B4=CE=B5=DD=B9=E9=CF=C2=D2=BB=B2=E3=
=A3=AC=D6=B1=BD=D3=BA=F6=C2=D4=A1=A3=CA=FA=D7=C5=B5=C4=B9=A5=BB=F7=B7=BD=CA=
=BD=B5=C4=C4=C4=B8=F6=CA=FD=BF=C9=D2=D4=D6=B1=BD=D3=B1=A3=C1=F4=B5=BD=CF=C2=
=D2=BB=B2=E3=A3=AC=B6=F8=B4=F2=D0=B1=B5=C4=B7=D6=B1=F0=D2=AA=CF=F2=D7=F3=CF=
=F2=D3=D2=D2=C6=D2=BB=CE=BB=A1=A3=20
      </STRONG></P>
      =
<P><STRONG>=D4=F5=D1=F9=BC=D3=C8=EB=D2=BB=B8=F6=C6=E5=D7=D3=C4=D8=A3=BF=BF=
=C9=D2=D4=D3=C3=D2=BB=B8=F6for=D1=AD=BB=B7=A3=ACp=3D1 shl =
(i-1)=A3=BB=D4=DD=CA=B1=C8=A1=B5=C3=D2=BB=B8=F6=CE=BB=D6=C3=C8=BB=BA=F3=C5=
=D0=B6=CF p and=20
      =
pos=CA=C7=B7=F1=B5=C8=D3=DA0.(pos=CA=C7=C4=DC=B7=C5=B5=C4=CE=BB=D6=C3)=B5=
=AB=CA=C7=D5=E2=D1=F9=D7=F6=BB=E1=B3=AC=CA=B1=A1=A3<BR>=C6=E4=CA=B5=BE=CD=
=CA=C7=D0=E8=D2=AA=C8=A1=B5=C3=D7=EE=D3=D2=B1=DF=B5=C4=C4=C7=D2=BB=B8=F61=
=A3=AC=D3=C3=CD=EA=BE=CDpos-p=BE=CD=D0=D0=C1=CB=A1=A3=BF=C9=D2=D4=D3=C3po=
s and=20
      (pos xor (pos-1))=A1=A3</STRONG></P>
      <P><STRONG>pos and (pos xor=20
      =
(pos-1))=B5=C4=D7=F7=D3=C3=BE=CD=CA=C7=C8=A1=B3=F6=D7=EE=D3=D2=B1=DF=B5=C4=
=C4=C7=B8=F61=C0=B4=A1=A3=D2=F2=CE=AApos-1=BD=AB=D7=EE=D3=D2=B1=DF=C4=C7=B8=
=F61=B1=E4=CE=AA0=A3=AC=D3=D2=B1=DF=B5=C40=B1=E4=CE=AA1=A3=AC=D5=E2=D1=F9=
=C0=B4=D2=BB=B4=CExor=D4=CB=CB=E3=B5=C4=BD=E1=B9=FB=BE=CD=CA=C7=D7=EE=D3=D2=
=B1=DF=C4=C7=B8=F61=BB=B9=CA=C71=A3=AC=BA=F3=B1=DF=B5=C40=B1=E4=B3=C9=C1=CB=
1.=B4=CB=CA=B1=C4=C3=CB=FC=BA=CD=D4=AD=CA=FDand=D2=BB=CF=C2=A3=AC=D4=AD=CF=
=C8=D7=EE=D3=D2=B1=DF=B5=C41=BB=B9=CA=C71=A3=AC=BA=F3=B1=DF=B5=C41=D3=C9=D3=
=DA=D4=AD=CA=FD=C4=C7=B8=F6=CE=BB=D6=C3=CA=C70=A3=AC=CB=F9=D2=D4=B1=E4=B3=
=C9=C1=CB0=A1=A3</STRONG></P>
      <P><STRONG>pos:100110<BR>pos-1:100101<BR>pos xor =
pso-1:000011<BR>pos and=20
      (pos xor (pos-1)):000010</STRONG></P>
      =
<P><STRONG>{<BR>TASK:checker<BR>LANG:PASCAL<BR>}<BR>{$D-,L-,Y-,R-,S-,I-,Q=
-}<BR>program=20
      checker;<BR>var<BR>&nbsp;&nbsp;&nbsp;=20
      n,total,upright,biasl,biasr,finish:longint;<BR>a:array[1..14] of=20
      integer;<BR>b,c,d:array[-13..26] of boolean;<BR>procedure=20
      init;<BR>begin<BR>&nbsp;&nbsp;&nbsp;=20
      assign(input,'checker.in');reset(input);<BR>&nbsp;&nbsp;&nbsp;=20
      readln(n);<BR>&nbsp;&nbsp;&nbsp; finish:=3D(1 shl n)=20
      -1;<BR>&nbsp;&nbsp;&nbsp;=20
      fillchar(b,sizeof(a),true);<BR>&nbsp;&nbsp;&nbsp;=20
      fillchar(c,sizeof(b),true);<BR>&nbsp;&nbsp;&nbsp;=20
      fillchar(d,sizeof(b),true);<BR>&nbsp;&nbsp;&nbsp;=20
      total:=3D0;<BR>&nbsp;&nbsp;&nbsp; =
close(input);<BR>end;</STRONG></P>
      <P><STRONG>procedure dfs(t:integer);<BR>var<BR>&nbsp;&nbsp;&nbsp;=20
      j,i:integer;<BR>begin<BR>for j:=3D1 to n do<BR>&nbsp;&nbsp; if =
b[j]and=20
      c[t+j] and d[t-j] then<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=20
      begin<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=20
      a[t]:=3Dj;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=20
      b[j]:=3Dfalse;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=20
      c[t+j]:=3Dfalse;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=20
      d[t-j]:=3Dfalse;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if t=3Dn=20
      then<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=20
      =
begin<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbs=
p;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp=
;=20
      &nbsp;&nbsp;=20
      =
inc(total);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbs=
p;&nbsp;=20
      for i:=3D1 to n-1=20
      =
do<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =

      write(a[i],'=20
      =
');<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =

      &nbsp;&nbsp;=20
      =
writeln(a[n]);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&=
nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&n=
bsp;=20
      &nbsp;&nbsp;&nbsp; if total=3D3 then=20
      exit;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=20
      end<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else=20
      dfs(t+1);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=20
      b[j]:=3Dtrue;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=20
      c[t+j]:=3Dtrue;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=20
      d[t-j]:=3Dtrue;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =
end;<BR>end;<BR>procedure=20
      dfsn(upright,biasl,biasr:longint);<BR>var<BR>&nbsp;&nbsp;&nbsp;=20
      pos,p,i:longint;<BR>begin<BR>&nbsp;&nbsp;&nbsp; pos:=3Dfinish and=20
      not(upright or biasl or biasr);<BR>&nbsp;&nbsp;&nbsp; while pos =
&lt;&gt;0=20
      do<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=20
      =
begin<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbs=
p;=20
      p:=3Dpos and (pos xor=20
      =
(pos-1));<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=
&nbsp;=20
      =
dec(pos,p);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbs=
p;&nbsp;=20
      if upright+p=3Dfinish then=20
      =
inc(total)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp=
;&nbsp;=20
      else dfsn(upright+p,(biasl+p)shl 1,(biasr+p)shr=20
      1);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=20
end;<BR>end;</STRONG></P>
      <P><STRONG>begin<BR>&nbsp;&nbsp;&nbsp; init;<BR>&nbsp;&nbsp;&nbsp; =

      =
assign(output,'checker.out');rewrite(output);<BR>&nbsp;&nbsp;&nbsp;=20
      dfs(1);<BR>&nbsp;&nbsp;&nbsp; total:=3D0;<BR>&nbsp;&nbsp;&nbsp;=20
      dfsn(0,0,0);<BR>&nbsp;&nbsp;&nbsp; =
writeln(total);<BR>&nbsp;&nbsp;&nbsp;=20
      close(output);<BR>end.</STRONG></P>
      <P></P><STRONG>
      <HR>
      </STRONG>
      =
<P><STRONG>usaco=B5=C4=B7=D6=CE=F6=A3=AC=C7=B0=C3=E6=C6=D5=CD=A8=CB=D1=CB=
=F7=B5=C4=BA=DC=C5=A3</STRONG></P>
      <P><STRONG>We use a recursive complete search to simply test all =
boards.=20
      The search proceeds by trying to put one checker in each row. We =
keep=20
      track of which columns and diagonals already have checkers on them =
in the=20
      "col", "updiag", and "downdiag" arrays. </STRONG></P>
      <P><STRONG>Since we generate solutions in increasing order, we =
record the=20
      first 3 in the "sol" array. </STRONG></P>
      <P><STRONG>Symmetry enables us to count the first half of the =
solutions=20
      double and avoid calculating the second half. An exception happens =
when N=20
      is odd; the odd row needs to be counted once. </STRONG></P>
      <P><STRONG>The N&gt;6 lines get the program out of trouble when =
N=3D=3D6,=20
      because at that point, the first 3 solutions include one of the =
symmetric=20
      answers. </STRONG></P>
      <P><STRONG>Since we number rows from 0 to N-1 rather than 1 to N, =
we need=20
      to add 1 to each digit as we print (in "printsol"). =
</STRONG></P><PRE><STRONG>/*
TASK: checker
LANG: C
*/
#include &lt;stdio.h&gt;
#include &lt;stdlib.h&gt;
#include &lt;string.h&gt;
#include &lt;assert.h&gt;

#define MAXN 16

int n;
int nsol, nprinted;
char row[MAXN];
FILE *fout;

void
solution() {
    int i;
    for(i=3D0; i&lt;n; i++) {
 if(i !=3D 0) fprintf(fout, " ");
 fprintf(fout, "%d", row[i]+1);
    }
    fprintf(fout, "\n");
}

/* Keep track of whether there is a checker on each column, and =
diagonal. */
char col[MAXN];  /* (i, j) -&gt; j */
char updiag[2*MAXN]; /* (i, j) -&gt; i+j */
char downdiag[2*MAXN]; /* (i, j) -&gt; i-j + N */

/*
 * Calculate number of ways to place checkers
 * on each row of the board starting at row i and going to row n.
 */
void
nway(i, lim) {
    int j;

    if(i =3D=3D n) {
 nsol++;
 if (n &gt; 6 &amp;&amp; row[0] &lt; n/2) nsol++;
 if (nprinted++ &lt; 3) solution();
 return;
    }

    for(j=3D0; j&lt;lim; j++){
 if(!col[j] &amp;&amp; !updiag[i+j] &amp;&amp; !downdiag[i-j+MAXN]){
     row[i] =3D j;

     col[j]++;
     updiag[i+j]++;
     downdiag[i-j+MAXN]++;

     nway(i+1,n);

     col[j]--;
     updiag[i+j]--;
     downdiag[i-j+MAXN]--;
 }
    }
}

main(void) {
    FILE *fin =3D fopen("checker.in", "r");
    fout =3D fopen("checker.out", "w");
    fscanf(fin, "%d", &amp;n);
    nway(0, n&gt;6?(n+1)/2:n);
    fprintf(fout, "%d\n", nsol);
    exit (0);
}
</STRONG></PRE>
      <H3>Clever Michael Rybak's Solution</H3>
      <P><STRONG>The Ukraine's Michael Rybak removed the 'this row is =
used'=20
      search (which obviously at the end of the recursion is a lot of =
wasted=20
      iterating) and replaced it with a list of valid rows to use (which =

      presumably has but a single element at the end of the recursion). =
His=20
      program runs almost 4x faster then N=3D=3D13. =
</STRONG></P><PRE><STRONG>Program Checker;
   Var diagPLUS: Array[2..30] Of Boolean;
       diagMINUS: Array[-15..15] Of Boolean;
       sol: Array[1..15] Of ShortInt;
       i,n,found: Longint;
       stop: Boolean;
       next,prev: Array[0..16] Of ShortInt;
       sy: ShortInt;

Procedure Search0(y:ShortInt);
    Var x,i:ShortInt;
Begin
    If stop Then Exit;
    If y=3Dn+1 Then Begin
        Inc(found);
        If found&lt;4 Then Begin
            For i:=3D1 To n-1 Do
                Write(sol[i],' ');
            Writeln(sol[n]);
        End Else
        stop:=3DTrue;
        Exit;
    End;
    If sol[y]&lt;&gt;0 Then Begin
        Search0(y+1);
        Exit;
    End;
    x:=3Dnext[0];
    While x&lt;=3Dn Do Begin
        If Not ((diagPLUS[x+y]) Or (diagMINUS[x-y])) Then Begin
            sol[y]:=3Dx;
            diagPLUS[x+y]:=3DTrue;
            diagMINUS[x-y]:=3DTrue;
            next[prev[x]]:=3Dnext[x];
     prev[next[x]]:=3Dprev[x];
            Search0(y+1);
            diagPLUS[x+y]:=3DFalse;
            diagMINUS[x-y]:=3DFalse;
            next[prev[x]]:=3Dx; prev[next[x]]:=3Dx;
        End;
        x:=3Dnext[x];
    End;
    sol[y]:=3D0;=20
End;

Procedure Search;
    Var x:ShortInt;
Begin
    If sy=3Dn+1 Then Begin
        Inc(found);
        Exit;
    End;
    If sol[sy]&lt;&gt;0 Then Begin
        Inc(sy);
        Search;
        Dec(sy);
        Exit;
    End;=20
    x:=3Dnext[0];
    While x&lt;=3Dn Do Begin
        If Not ((diagPLUS[x+sy]) Or (diagMINUS[x-sy])) Then Begin
            sol[sy]:=3Dx;
            diagPLUS[x+sy]:=3DTrue;
            diagMINUS[x-sy]:=3DTrue;
            next[prev[x]]:=3Dnext[x];
            prev[next[x]]:=3Dprev[x];
            Inc(sy);
            Search;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美日韩亚洲不卡| 国产精品资源在线观看| 91在线看国产| 亚洲另类色综合网站| 91蝌蚪porny九色| 亚洲激情网站免费观看| 欧美色精品在线视频| 日韩高清在线观看| 久久综合九色欧美综合狠狠| 成人午夜视频网站| 亚洲乱码国产乱码精品精可以看| 欧美日韩在线直播| 久久国产尿小便嘘嘘尿| 国产精品久久久久四虎| 欧美色图天堂网| 久久精品国产**网站演员| 亚洲国产精品99久久久久久久久 | 777久久久精品| 精品在线播放免费| 国产精品入口麻豆原神| 欧美在线影院一区二区| 美女www一区二区| 国产精品二三区| 在线不卡a资源高清| 国产呦萝稀缺另类资源| 亚洲欧美国产三级| 日韩欧美国产电影| 成人ar影院免费观看视频| 亚洲成人一区二区| 国产三级欧美三级| 欧美日韩一区二区三区四区 | 久久久国际精品| 91麻豆视频网站| 麻豆91精品91久久久的内涵| 欧美激情一区二区三区蜜桃视频| 在线观看av不卡| 国产成人综合视频| 三级久久三级久久久| 亚洲国产精品ⅴa在线观看| 欧美在线短视频| 欧美精品一区二| 欧美综合在线视频| 成人h动漫精品| 狠狠色狠狠色综合系列| 亚洲一区二区在线免费观看视频| 国产亚洲综合性久久久影院| 欧美丰满高潮xxxx喷水动漫| 成人ar影院免费观看视频| 久久er99热精品一区二区| 亚洲综合免费观看高清完整版| 久久亚洲春色中文字幕久久久| 欧美日韩一区二区三区四区五区| 成人av影院在线| 国产精品一卡二| 久久精品99国产国产精| 亚洲成a人片在线不卡一二三区| 国产精品久久久久毛片软件| 久久久久久亚洲综合| 日韩欧美另类在线| 欧美欧美欧美欧美首页| 欧美熟乱第一页| 色八戒一区二区三区| www.日韩大片| 丰满亚洲少妇av| 国产一区二区三区在线看麻豆| 视频一区国产视频| 亚洲一区二区三区四区的| 亚洲免费观看在线视频| 中文字幕亚洲在| 欧美精品一区二区三区视频| 欧美一卡二卡在线观看| 6080yy午夜一二三区久久| 欧美性生活久久| 欧美日韩一区高清| 6080午夜不卡| 91精品国产黑色紧身裤美女| 91精品国产色综合久久不卡电影| 欧美日本一区二区三区四区| 这里只有精品视频在线观看| 欧美一区二区三区在线| 在线91免费看| 欧美sm美女调教| 久久久亚洲国产美女国产盗摄| 久久久久88色偷偷免费| 国产视频一区二区在线观看| 国产亚洲精品中文字幕| 国产精品入口麻豆原神| 亚洲色图在线看| 亚洲影院久久精品| 午夜av一区二区| 极品销魂美女一区二区三区| 国产经典欧美精品| av亚洲精华国产精华精华| 91高清在线观看| 91精品国产美女浴室洗澡无遮挡| 日韩欧美色电影| 国产精品欧美久久久久一区二区 | aaa亚洲精品| 色综合激情五月| 欧美一区二区三区不卡| 久久亚洲私人国产精品va媚药| 日本一区二区三区四区在线视频| 日韩伦理免费电影| 午夜精品一区二区三区电影天堂| 蜜桃久久久久久久| 国产91丝袜在线观看| 99精品欧美一区二区蜜桃免费| 欧美日韩在线观看一区二区 | 国产不卡在线一区| 一本到高清视频免费精品| 欧美日韩电影一区| 精品国产污污免费网站入口| 成人免费小视频| 日本美女一区二区| 9l国产精品久久久久麻豆| 欧美日韩视频不卡| 久久欧美中文字幕| 亚洲自拍偷拍网站| 国产一区二区精品久久99| 色丁香久综合在线久综合在线观看| 91精品久久久久久久99蜜桃| 久久精品欧美一区二区三区麻豆 | 日韩中文字幕不卡| 国产成人av福利| 欧美色中文字幕| 国产亚洲综合性久久久影院| 一级中文字幕一区二区| 激情欧美日韩一区二区| 在线观看国产一区二区| 国产日韩欧美精品一区| 天堂一区二区在线免费观看| 成人教育av在线| 日韩你懂的在线播放| 一区二区三区日韩欧美精品| 狠狠狠色丁香婷婷综合激情| 欧美亚洲愉拍一区二区| 国产精品美女一区二区| 久久国产精品露脸对白| 欧美日韩午夜在线| 亚洲视频在线一区| 国产suv精品一区二区883| 日韩美女视频一区二区在线观看| 一区二区三区欧美在线观看| 国产精品18久久久久久久网站| 欧美精品九九99久久| 一区二区在线看| 91在线观看污| 国产欧美日韩精品在线| 国产一区二区精品久久99| 欧美一级久久久| 亚洲成a人片在线不卡一二三区 | 国产亚洲精品久| 久色婷婷小香蕉久久| 欧美日韩免费电影| 亚洲综合色在线| 欧洲另类一二三四区| 亚洲黄色性网站| 一本色道亚洲精品aⅴ| 亚洲国产精品v| 国产成人福利片| 国产欧美一区二区在线| 国产米奇在线777精品观看| 精品福利一区二区三区| 久久成人18免费观看| 精品国产一区二区三区久久影院 | 亚洲最快最全在线视频| 成人一道本在线| 国产精品久久久久久久久图文区| 国产aⅴ综合色| 国产精品成人免费在线| 99视频一区二区三区| 国产精品久久久久aaaa| 91网址在线看| 亚洲国产va精品久久久不卡综合| 在线观看日韩一区| 天天综合天天综合色| 91精品国产麻豆国产自产在线| 另类小说色综合网站| 久久日韩精品一区二区五区| 在线播放欧美女士性生活| 青青草97国产精品免费观看无弹窗版| 欧美精品一二三区| 老鸭窝一区二区久久精品| 久久一夜天堂av一区二区三区| 国产曰批免费观看久久久| 欧美国产成人精品| 色狠狠色噜噜噜综合网| 三级影片在线观看欧美日韩一区二区| 欧美一区二区三区四区视频| 国模一区二区三区白浆| 国产欧美一区二区精品秋霞影院| av福利精品导航| 亚洲午夜视频在线| 日韩欧美一二三区| 不卡电影一区二区三区| 亚洲一二三级电影| 久久网站最新地址| 色综合久久久久| 日本大胆欧美人术艺术动态| 久久精品一区二区三区av |