} ϰÌ⣺
1.ÇóÇø¼äµÚK´óÖµ¡£
2.×Ó¼¯ºÍÎÊÌ⣨Á½¸öÔªËØµÄºÍ£©£º¸ø¶¨Ò»¸öÓÉn¸öʵÊý¹¹³ÉµÄ¼¯ºÏSºÍÁíÒ»¸öʵÊýX£¬ÅжÏSÖÐÊÇ·ñÓÐÁ½¸öÔªËØµÄºÍµÈÓÚX¡££¨Ìáʾ£ºÀûÓöþ·Ö²éÕÒ£©
˼¿¼Ì⣺ÆåÅ̸²¸ÇÎÊÌâ
ÓÐÒ»¸ö2k*2kµÄ·½¸ñÆåÅÌ£¬Ç¡ÓÐÒ»¸ö·½¸ñÊǺÚÉ«µÄ£¬ÆäËûΪ°×É«¡£ÈÎÎñÊÇÓðüº¬3¸ö·½¸ñµÄLÐÍÅÆ¸²¸ÇËùÓа×É«·½¸ñ¡£×¢£ººÚÉ«·½¸ñ²»Äܱ»¸²¸Ç£¬ÇÒÈÎÒâÒ»¸ö°×É«·½¸ñ²»ÄÜͬʱ±»Á½¸ö»ò¸ü¶àÅÆ¸²¸Ç¡£LÐÍÅÆµÄ4ÖÖÐýת·½Ê½ÈçÏ£º
·ÖÎö£ºµ±k=1ʱ£¬Ñ¡ÓÃÒ»¿éÅÆ¾Í¹»ÁË£»¶ÔÓÚ2k*2kµÄÆåÅÌ£¬¿ÉÒÔÇзÖΪ4¿é£¬Ã¿¿é´óСΪ2k-1*2k-1£¬Ôò¶ÔÓкڸñµÄÄÇ¿é¿ÉÒÔÓõݹéÀ´ÊµÏÖ£»ÎÊÌâÊÇÆäËû3¿éÄØ£¿¿ÉÒÔÔÚÇзֱ߽繹ÔìºÚ¸ñ£¬½ø¶øÓõݹé½â¾öÎÊÌâ¡£
ËÄ¡¢»ØËÝ·¨
»ØËÝ·¨¿ÉÒÔ¿´×÷ÊÇ´øÓÅ»¯µÄÇî¾Ù·¨¡£ËüµÄ»ù±¾Ë¼ÏëÊÇÔÚÒ»¿Ãº¬ÓÐÎÊÌâÈ«²¿¿ÉÄܽâµÄ״̬¿Õ¼äÊ÷ÉϽøÐÐÉî¶ÈÓÅÏÈËÑË÷¡£ËÑË÷¹ý³ÌÖУ¬Ã¿µ½´ïÒ»¸ö½áµã£¬ÔòÅжÏÒԸýáµãΪ¸ùµÄ×ÓÊ÷ÊÇ·ñº¬ÓÐÎÊÌâµÄ½â£¬Èç¹ûÈ·¶¨Æä²»º¬ÎÊÌâµÄ½â£¬ÔòÍ˻ص½Éϲ㸸½áµã¡£»ØËÝ·¨µÄÓ¦Ó÷¶Î§£ºÖ»ÒªÄܰѴýÇó½âµÄÎÊÌâ·Ö³É²»Ì«¶àµÄ²½Ö裬ÿ¸ö²½ÖèÓÖÖ»Óв»Ì«¶àµÄÑ¡Ôñ£¬¶¼¿ÉÒÔ¿¼ÂÇÓ¦ÓûØËÝ·¨¡£
»ØËÝ·¨Çó½â²½Ö裺
£¨1£© Õë¶ÔËù¸øÎÊÌ⣬¶¨ÒåÎÊÌâµÄ½â¿Õ¼ä£»
£¨2£© È·¶¨Ò×ÓÚËÑË÷µÄ½â¿Õ¼ä½á¹¹£¨×Ó¼¯Ê÷ºÍÅÅÁÐÊ÷£©£»
£¨3£© ÒÔÉî¶ÈÓÅÏÈ·½Ê½ËÑË÷½â¿Õ¼ä£¬²¢ÔÚËÑË÷¹ý³ÌÖÐÓüôÖ¦º¯Êý±ÜÃâÎÞЧËÑ
Ë÷¡£ ³£ÓõļôÖ¦º¯Êý£º
£¨1£© ÓÃÔ¼ÊøÌõ¼þÔÚÀ©Õ¹½áµã´¦¼ôÈ¥²»Âú×ãÔ¼ÊøµÄ×ÓÊ÷£» £¨2£© ÓÃÏ޽纯Êý¼ôÈ¥µÃ²»µ½×îÓŽâµÄ×ÓÊ÷¡£
Àý1£º¾µä»ØËÝ·¨½â¾öµÄÎÊÌ⡪¡ªËĻʺ󣨰˻ʺó£©ÎÊÌâ¡£ÔÚ4¡Á4£¨8¡Á8£©ÆåÅÌÉÏ·ÅÖÃ4£¨8£©¸ö»Êºó£¬Ê¹ËýÃÇ»¥²»¹¥»÷£¨»ÊºóµÄ¹¥»÷·¶Î§ÎªÍ¬ÐÐͬÁкÍͬ¶Ô
17
½ÇÏߣ©¡£
void search(int cur) {
int i,j;
if(cur==n) tot++; else for(i=0;i Àý2£º×Ó¼¯ºÍÎÊÌâ¡£SÊÇÒ»¸öÓÉn¸öÕýÕûÊý×é³ÉµÄ¼¯ºÏ£ûx1,x2,?,xn£ý,cÊÇÒ»¸öÕýÕûÊý¡£×Ó¼¯ºÍÎÊÌâÊÇÅж¨ÊÇ·ñ´æÔÚÒ»¸öSµÄ×Ó¼¯S1£¬Ê¹µÃÆäÖеÄÔªËØÖ®ºÍµÈÓÚc¡£ ˵Ã÷£ºcwΪµ±Ç°ÔªËغͣ»rΪʣÓàÔªËØÖ®ºÍ£»wÊý×é¼Ç¼¼¯ºÏÖи÷ÔªËØÖµ£»xÊý×éÃèÊö¶ÔӦλÖõÄÔªËØÊÇ·ñÑ¡ÖÐ int backtrack(int i) //i´Ó1¿ªÊ¼ { if (i>n) { } r -= w[i]; //¼ÆËãÊ£Óà´óС if (cw+w[i]<=c) //Åжϵ±Ç°ºÍÊÇ·ñСÓÚµÈÓÚc { } x[i]=1; //Ñ¡ÖеÚi¸öÔªËØ cw += w[i]; if (backtrack(i+1)) return 1; cw -= w[i]; if (cw==c) return 1; else return 0; int ok=1; C[cur]=i; for(j=0;j if(C[cur]==C[j]||cur-C[cur]==j-C[j]||cur+C[cur]==j+C[j]) { ok=0; break;} If(ok) search(cur+1); 18 if (cw+r >= c) //Åжϵ±Ç°ºÍ¼ÓÉÏÊ£ÓàÔªËØºÍÊÇ·ñÄÜÂú×ã´óÓÚµÈc { } r += w[i]; return 0; } ×¢Ò⣺ÉÏÊö´úÂëÕâÖֵݹ鷽ʽֻÄÜÕÒ³öÒ»¸ö½â£¬²»»áÁгöËùÓпÉÄܵĽ⣬ÒòΪ¸Ãº¯Êý´øÓзµ»ØÖµ£¬µ±ÕÒµ½Ò»¸ö½âºóÔò²ã²ã·µ»Ø£¬²»»áÔÙ¼ÌÐø±éÀúÏÂÈ¥¡£ ϰÌ⣺ 1. ÓÐ5¸öíÀÂë£¬ÖØÁ¿Îª1£¬3£¬9£¬27£¬81£¬¿ÉÒÔ×éºÏ³É1-121Ö®¼äµÄÈÎÒâÕûÊý¡£¶ÔÓÚÓû§¸ø¶¨µÄÖØÁ¿£¬¸ø³öíÀÂë·½°¸¡£ ÀýÈ磺ÊäÈë5 Êä³ö 9-3-1 ÊäÈë19 Êä³ö 27-9+1 x[i] = 0; //²»Ñ¡µÚi¸öÔªËØ if ( backtrack(i+1)) return 1; 2. ÂíµÄ±éÀúÎÊÌâ¡£ÔڣΣª£ÍµÄÆåÅÌÖУ¬ÂíÖ»ÄÜ×ßÈÕ×Ö¡£Âí´ÓλÖÃ(x,y)´¦³ö·¢£¬°Ñ ÆåÅ̵Äÿһ¸ñ¶¼×ßÒ»´Î£¬ÇÒÖ»×ßÒ»´Î¡£ÕÒ³öËùÓз¾¶¡£ 19