±±¾©½»Í¨´óѧ¼ÆËã»úöλÔÓéÀֵǼÈë¿ÚÏÂÔØöλÔÓéÀÖ¹Ù·½appÏÂÔØ¸¨µ¼°à±Ê¼Ç£¨Êý¾Ý½á¹¹£©(2)
±±¾©½»Í¨´óѧ /2009-04-04
for (i=1; i<=n ; i++) printf(¡° %d¡±,a[i]);
printf(¡°\n¡±);
}
else for(i=1; i<=n; i++)
if (ok(i,j)) //¼ì²é(i,j)ÉÏÄÜ·ñ·Å
{ a[j]=i; queen(j+1);}//ÔÚ(i,j)ÉÏ·Å£¬µÚjÁеĻʺóÔÚµÚiÐÐ
}
main ()
{ queen(1); } // ´ÓµÚÒ»ÁпªÊ¼ÊÔ̽
10£®¶ÓÁУº ×¢ÒâÑ»·¶ÓÁÐÅпÕÅÐÂúµÄÌõ¼þ£¨Ôö¼ÓÒ»¸öÔªËØµÄ¿Õ¼ä£©
11.ÔÚ·ÇÑ»·¶ÓÁÐÖУº
µ±Q.front=Q.rear<>0ʱÄÜ·ñÅпգ¿ ÄÜ
µ± Q.rear=0ʱ£¬ÄÜ·ñÅпգ¿ ÄÜ
Q.front=0ʱ£¬ÄÜ·ñÅÐ¿Õ ²»ÄÜ
13. Ñ»·¶ÓÁÐÅпÕÅÐÂú¼°Ç󳤶È
¿Õ£º Q.front=Q.rear
Âú£º (Q.rear+1)%MAXSIZE=Q.front
³¤¶È£º£¨Q.rear-Qfront+MAXSIZE£©%MAXSIZE
14. k½×ì³²¨ÄÇêüÐòÁÐ
ÊÔÓÃÑ»·¶ÓÁбàдÇók½×ì³²¨ÄÇêüÐòÁÐÖеÄǰn+1Ïf0.,f1,f2,¡.fn£©µÄËã·¨£¬ÒªÇóÂú×ãfn<=max¶øfn+1> max£¬ ÆäÖÐmaxΪij¸öÔ¼¶¨µÄ³£Êý¡££¨×¢Òâ±¾ÌâËùÓõÄÑ»·¶ÓÁеÄÈÝÁ¿Îªk£©
·½·¨Ò»£ºfi=fi-1+¡fi-k£¨Î´¿¼¹ý£©
¶ø fk=f0+¡.f(k-1),ÓÃfk³åµôf0,ÓÃf(k+1)³åµôf1,ÒÀ´ÎÑ»·Çó³öfk,Ö±µ½·¢fk>maxΪֹ
Void fb(int k; int max)
{ for(i=0;i<=k-2;i++) {f[i]=0; cq.elem[i]=0;}
cq.elem[k-1]=1; cq.rear]k-1;n=k;
while (cq.elem[cq.rear]<max)
{f[n]=0;
for(j=0;j<k;j++) f[n]=f[n]+cq.elem[j];
cq.rear=(cq.rear+1)%k;
cq.elem[cq.rear]=f[n]; n++;
}
if(cq.elem[cq.rear]>max) n=n-2;
else n=n-1;
if (max=1) {n=k; f[k]=1;}
}
·½·¨¶þ£ºfi=f(i-1)+¡f(i-k); f(i+1)=fi+f(i-1)+¡.f(i-k+1)
Á½Ê½Ïà¼õ£ºf(i+1)=2*fi-f(i-k)
f(k)=2*f(k)-f(0) (ʱ¼ä¸´ÔÓ¶ÈҪС)
Void fb (int k; int max;)
{ for (i=0;i<=k-2; i++) {f[i]=0; cq.elem[i]=0;}
cq.elem[k-1]=cq.elem[k]=1; cq.rear=k; n=k+1; f[k-1]=f[k]=1;
while (cq.elem[cq.rear]<max)
{ j=(cq.elem+1)%(k+1);
f[n]=cq.elem[cq.rear]*2-cq.elem[j];
cq.elem[j]=f[n]; cq.rear=j; n++;
}
if (cq.elem[cq.rear]>max) n=n-2; else n=n-1;
if (max= =1) {n=k; f[k]=1;}
if (max= =0) n=k_2;
}
µÚËÄÕ£º´®
1. ÖØµã£ºKMPËã·¨
£¨ÒªÇóÊéÉϵijÌÐòÒª¿´¶®£¬±ÈÈç˵04Äê¾Í³öÁËģʽƥÅäµÄÔĶÁ³ÌÐòµÄÌâÄ¿£©
»áÇónextºÍnextval Êý×éµÄÖµ¡£
±¾ÕÂöλÔÓéÀֵǼÈë¿ÚÏÂÔØÄÚÈÝ»ù±¾¾ÍÊǼ¸¸öÐÎʽ£¬ÒªÃ´¸øÄã¸ö×Ö·û´®ÒªÇóËüµÄnext»ònextvalÊý×飬»òÕß»á¸ø³öÄãÖ÷´®ºÍ×Ó´®£¬ÒªÇóÄãд³öÆ¥ÅäµÄ¹ý³Ì£¬»¹ÓоÍÊÇ04ÄêµÄÄÇÖÖÔĶÁµÄÐÎʽÁË£¡
µÚÎåÕ£ºÊý×飬¹ãÒå±í
1. Á½Àà¾ØÕó
1£©£ºÌØÊâ¾ØÕ󣺷Ç0ÔªµÄ·Ö²¼ÓÐÒ»¶¨¹æÔò¡£Èç¶Ô³Æ¾ØÕó£¬Èý½Ç¾ØÕ󣬶ԽǾØÕó
2£©£ºÏ¡Êè¾ØÕó
2. ¶Ô³Æ¾ØÕ󣨳öÑ¡ÔñºÍÌî¿ÕµÄ»ú»á½Ï´ó£©
¶Ô³Æ¾ØÕó×îÉÙÐèÒª¶àÉÙ¸ö´æ´¢µ¥Ôª n(n+1)/2¸ö
¹ØÏµ£ºk= (²Î¿´P95)
×¢ÒâÔÚÈ·¶¨¶Ô³Æ¾ØÕóºÍ¶ÔӦһάÊý×éµÄλÖõÄÌâĿʱһ¶¨Òª×¢ÒâÊÇÒÔÐÐÐò»¹ÊÇÁÐÐò£¬Ï±êÊÇ´Ó0¿ªÊ¼»¹ÊÇ´Ó1¿ªÊ¼
Àý£ºÈô1<=i,j<=n ÒÑÖªi, j Çók ¹«Ê½1
k=(i*(i-1))/2+j-1 (i>=j)
k=(j*(j-1))/2+i-1 (i<j)
Èô0<=i,j<=n-1ÒÑÖªi, j Çók ¹«Ê½2
k=(i*(i+1))/2+j (i>=j)
k=(j*(j+1))/2+i (i<j)
Èô1<=i,j<=n,ÒÑÖªk, Çói,j £¨Óù«Ê½1£©
ÒÑÖªk=49 Çói,j
½«j=i ´úÈ루¹«Ê½1£©µÃ k+1<=i(i+1)/2 Çóʹ֮³ÉÁ¢µÄ×îСi .È»ºóÔÙ½«i Öµ´úÈ루¹«Ê½1£©Çó³öj
Èô 0<=i,j<=n-1 ÒÑÖªkÇói,j (ͬÉÏÓù«Ê½2)
ÒÔÉÏ·½·¨Ï£Íû´ó¼ÒÕÆÎÕ£¡
3. ÏÂÈý½Ç¾ØÕó£¨ÀàËÆÓڶԳƾØÕó£©
4. ÉÏÈý½Ç¾ØÕó
Èô0<=i,j<=n-1ÒÑÖªi, j Çók £¨ÒªÇó×Ô¼º»áÍÆµ¼£©
µÚpÐÐÉÏÇ¡ºÃÓÐn-p¸öÔªËØ£¬ÔÚiÐÐÉÏai,jǰÓÐj- i¸öÔªËØ£¬iǰÓÐi¸öÍêÕûÐÐ
ËùÒÔ µÚI ÐÐǰ¹²ÓÐÔªËØ¸öÊýΪ£º¡Æ(n-p) £¨ÇóºÍÏÂÏÞΪp=0,ÉÏÏÞΪi-1£©=
(i*(2n-i+1))/2
ËùÒÔ k= (i*(2n-i+1))/2+j-i i<=j (ÉÏÈý½Ç)
Èô1<=i,j<=n ÒÑÖªi, j ÇókµÄÇé¿ö´ó¼Ò¿ÉÒÔ×Ô¼ºÈ¥ÍƵ¼
k=((i-1)(2n-i+2))/2+(j-i+1)-1
×¢Ò⣺ÒÔÉϵÄkÖµ¾ù´Ó0¿ªÊ¼¡£ÆäʵÎÒÈÏΪ×öÕâÖÖÌâÄ¿£¬Ê×ÏÈ¿´Á½µã£¬Ò»ÊǾØÕóµÄÆðʼϱ꣬¶þÊÇÊý×éµÄ¿ªÊ¼Ï±꣡¼ìÑéÄãµÄ¹«Ê½ÊÇ·ñÕýÈ·Äã¿ÉÒÔȡһ¸ö±È½ÏÈÝÒ×¼ÆËãµÄÔªËØ±ÈÈça0,2´úÈëµ½¹«Ê½¼ìÑéÏ£¬ÒòΪa0,2ÊǾØÕóµÄµÚÈý¸öÔªËØ£¡
Èý½Ç¾ØÕóµÄ´æ´¢µ¥ÔªÒª±È¶Ô³Æ¾ØÕó¶àÒ»¸öÔªËØ£¬ÓÃÓÚ´æ´¢Ïà¶ÔÈý½Ç¾ØÕóµÄ³£ ÊýÖµc£¬´æ·ÅÔÚµÚn(n+1)/2+1¸öµ¥ÔªÀï
ÀýÈ磺ÒÑÖªÒ»¸ö9½×ÉÏÈý½Ç¾ØÕóA°´Ðд洢ÔÚһάÊý×éBÖУ¬B[0]´æ·Å¾ØÕóÖеÚÒ»¸öÔªËØa11ÔòB[31]´æ·ÅÔªËØ£¨a5,6£©£¬°´ÁÐÐò´æ·Å£¬´æ·ÅÔªËØ£¨a4,8 £©
ÉÏÃæÌâÄ¿ÔÚ¼ÒôÖоùÓÐÏêϸ½²½â¹ý³Ì¡£
ÒÔÉϼÆËãÿÄêÖÁÉÙ»áÓÐÒ»¸öÌî¿ÕÌ⣡
5. Èý¶Ô½Ç¾ØÕó
°´ÐÐÐò 1<=i,j<=n ¡£Loc(aij)=Loc(a11)+3*(i-1)-1+j-i+2
ÈôÒ»¸ös£¨ËØÊý£©¶Ô½Ç¾ØÕóÂú×ãÏÂÊöÌõ¼þ£º
Èô0<=i,j<=n-1£¬ÒÑÖªi, j Çók ¡£¡¡k=(3*i-1)+(j-i+2)-1=2i+j
Èô0<=i,j<=n-1ÒÑÖªk Çói, j i=(k+1)/3, j=k-2*i.
Èô1<=i,j<=n¡¡ÒÑÖªi, j Çók¡£ k=3*(i-1)-1+(j-i+2)-1=2*i+j-3
Èô0<=i,j<=n-1ÒÑÖªk Çói, j. i=(k+1)/3+1 , j=k-2*i+3
ÒÔÉϹ«Ê½ÎÒÈÏΪûÓбØÒªÈ¥¼Ç£¬¿ÉÒԲο¼Ò»ÏÂÈËÓʳö°æÉçµÄ¡´Êý¾Ý½á¹¹¿Î³Ì¸¨µ¼ÓëϰÌâ½âÎö¡µÕâ±¾Ê飬ÀïÃæÓоßÌåµÄÍÆµ¼¹ý³Ì¡£ÏóÉÏÃæµÄËùÓеļÆËã¶¼ÓоßÌåÀýÌâ
¡¡¡¡¡¡£¶.Ëæ»úÏ¡Êè¾ØÕó´æ´¢£¨Ö»ÕÆÎÕÈýÔª×飬ÐÐÂß¼£¬Ê®×ÖÁ´±í²»ÒªÇóÕÆÎÕ£©
¡¡¡¡¡¡¡¡ÊìϤ´øÐбíµÄÏ¡Êè¾ØÕóµÄ´æ´¢½á¹¹£¬»á¸ù¾ÝÐбíÍÆµ¼Ô¾ØÕ󣨲ο´04ÄêµÄ¼ò´ðÌ⣩
6. ¹ãÒå±í£ºÅжϹãÒå±íµÄÉî¶È£¬¹ã¶È£¬ºÍ±í³¤¡£»á»¹ãÒå±íÓÃÊéÉϵĵÚÒ»ÖÖ´æ´¢½á¹¹¡£
ÓкܶàÅóÓÑ»¹ãÒå±íµÄʱºò¾³£»á³ö´í£¬ÎÒ¾õµÃ¿ÉÒÔÓÃÒ»¸ö·½·¨È¥¼ìÑéÄ㻵ÄͼÊÇ·ñÕýÈ·£¡Äã¿ÉÒÔ¸ù¾Ý¹ãÒå±íµÄ±í´ïʽÓÃgethead()ºÍgettail()º¯ÊýÈ¡µÃijһ¸öÔªËØ£¨ÕâÊÇһϵÁеIJÙ×÷×éºÏ£¬²Î¿´04ÄêµÄÌî¿ÕµÚÁùÌâµÄÐÎʽ£©£¬È»ºó¿´ÔÚÄ㻵ĹãÒå±íÖдӱíÍ·¿ªÊ¼È¡µÃ¸ÃÔªËØÊÇ·ñÒ²¾ÀúÁËÕâЩ²Ù×÷¾ÍÐÐÁË
µÚÁùÕ£ºÊ÷Óë¶þ²æÊ÷
£±. ÕÆÎÕ¶þ²æÊ÷µÄ5¸öÐÔÖÊ£¬²¢ÄÜÁé»îÔËÓ㡵ÚÈý¸öÐÔÖʵÄÖ¤Ã÷±ØÐëÕÆÎÕ£¨²Î¿´04ÄêµÄ¼ò´ðÌ⣱£©
£². ÒÑÖªÒ»¿Ã¶ÈΪmµÄÊ÷£¬ÓÐn1¸ö¶ÈΪ£±µÄ½áµã£¬ÓÐn2¸ö¶ÈΪ£²µÄ½áµã£¬ÓÐnm¸ö¶ÈΪm µÄ½áµã£¬ÎÊÓжàÉÙÒ¶×Ó½áµã£¿
