51. ³£¼ûµÄÁ½ÖÖ·ÖÖ§Ï޽編Ϊ£¨D£©
A. ¹ã¶ÈÓÅÏÈ·ÖÖ§Ï޽編ÓëÉî¶ÈÓÅÏÈ·ÖÖ§Ï޽編£»
B. ¶ÓÁÐʽ£¨FIFO£©·ÖÖ§Ï޽編Óë¶Ñջʽ·ÖÖ§Ï޽編£» C. ÅÅÁÐÊ÷·¨Óë×Ó¼¯Ê÷·¨£»
D. ¶ÓÁÐʽ£¨FIFO£©·ÖÖ§Ï޽編ÓëÓÅÏȶÓÁÐʽ·ÖÖ§Ï޽編£» ¶þ¡¢Ìî¿ÕÌâ
1.Ëã·¨µÄ¸´ÔÓÐÔÓРʱ¼ä ¸´ÔÓÐÔºÍ ¿Õ¼ä ¸´ÔÓÐÔÖ®·Ö¡£ 2¡¢³ÌÐòÊÇ Ëã·¨ ÓÃijÖÖ³ÌÐòÉè¼ÆÓïÑԵľßÌåʵÏÖ¡£
3¡¢Ëã·¨µÄ¡°È·¶¨ÐÔ¡±Ö¸µÄÊÇ×é³ÉËã·¨µÄÿÌõ Ö¸Áî ÊÇÇåÎúµÄ£¬ÎÞÆçÒåµÄ¡£ 4. ¾ØÕóÁ¬³ËÎÊÌâµÄËã·¨¿ÉÓÉ ¶¯Ì¬¹æ»® Éè¼ÆÊµÏÖ¡£ 5¡¢Ëã·¨ÊÇÖ¸½â¾öÎÊÌâµÄ Ò»ÖÖ·½·¨ »ò Ò»¸ö¹ý³Ì ¡£
6¡¢´Ó·ÖÖ稵ÄÒ»°ãÉè¼ÆÄ£Ê½¿ÉÒÔ¿´³ö£¬ÓÃËüÉè¼Æ³öµÄ³ÌÐòÒ»°ãÊÇ µÝ¹éËã·¨ ¡£ 7¡¢ÎÊÌâµÄ ×îÓÅ×ӽṹÐÔÖÊ ÊǸÃÎÊÌâ¿ÉÓö¯Ì¬¹æ»®Ëã·¨»ò̰ÐÄËã·¨Çó½âµÄ¹Ø¼üÌØÕ÷¡£ 8¡¢ÒÔÉî¶ÈÓÅÏÈ·½Ê½ÏµÍ³ËÑË÷ÎÊÌâ½âµÄËã·¨³ÆÎª »ØËÝ·¨ ¡£
9¡¢¼ÆËãÒ»¸öË㷨ʱ¼ä¸´ÔÓ¶Èͨ³£¿ÉÒÔ¼ÆËã Ñ»·´ÎÊý ¡¢ »ù±¾²Ù×÷µÄƵÂÊ »ò¼ÆËã²½¡£ 10¡¢½â¾ö0/1±³°üÎÊÌâ¿ÉÒÔʹÓö¯Ì¬¹æ»®¡¢»ØËÝ·¨ºÍ·ÖÖ§Ï޽編£¬ÆäÖв»ÐèÒªÅÅÐòµÄÊÇ ¶¯Ì¬¹æ»® £¬ÐèÒªÅÅÐòµÄÊÇ »ØËÝ·¨ £¬·ÖÖ§Ï޽編 ¡£
11¡¢Ê¹ÓûØËÝ·¨½øÐÐ״̬¿Õ¼äÊ÷²Ã¼ô·Ö֧ʱһ°ãÓÐÁ½¸ö±ê×¼£ºÔ¼ÊøÌõ¼þºÍÄ¿±êº¯ÊýµÄ½ç£¬N»ÊºóÎÊÌâºÍ0/1±³°üÎÊÌâÕýºÃÊÇÁ½ÖÖ²»Í¬µÄÀàÐÍ£¬ÆäÖÐͬʱʹÓÃÔ¼ÊøÌõ¼þºÍÄ¿±êº¯ÊýµÄ½ç½øÐвüôµÄÊÇ 0/1±³°üÎÊÌâ £¬Ö»Ê¹ÓÃÔ¼ÊøÌõ¼þ½øÐвüôµÄÊÇ N»ÊºóÎÊÌâ ¡£
12¡¢ ̰ÐÄÑ¡ÔñÐÔÖÊ ÊÇ̰ÐÄËã·¨¿ÉÐеĵÚÒ»¸ö»ù±¾ÒªËØ£¬Ò²ÊÇ̰ÐÄËã·¨Ó붯̬¹æ»®Ëã·¨µÄÖ÷񻂿±ð¡£
13¡¢¾ØÕóÁ¬³ËÎÊÌâµÄËã·¨¿ÉÓÉ ¶¯Ì¬¹æ»® Éè¼ÆÊµÏÖ¡£
14.̰ÐÄËã·¨µÄ»ù±¾ÒªËØÊÇ Ì°ÐÄÑ¡Ôñ ÐÔÖÊºÍ ×îÓÅ×ӽṹ ÐÔÖÊ ¡£ 15. ¶¯Ì¬¹æ»®Ëã·¨µÄ»ù±¾Ë¼ÏëÊǽ«´ýÇó½âÎÊÌâ·Ö½â³ÉÈô¸É ×ÓÎÊÌâ £¬ÏÈÇó½â ×ÓÎÊÌâ £¬È»ºó´ÓÕâЩ ×ÓÎÊÌ⠵ĽâµÃµ½ÔÎÊÌâµÄ½â¡£
16.Ëã·¨ÊÇÓÉÈô¸ÉÌõÖ¸Áî×é³ÉµÄÓÐÇîÐòÁУ¬ÇÒÒªÂú×ãÊäÈë¡¢ Êä³ö ¡¢È·¶¨ÐÔºÍ ÓÐÏÞÐÔ ËÄÌõÐÔÖÊ¡£
17¡¢´óÕûÊý³Ë»ýËã·¨ÊÇÓà ·ÖÖη¨ À´Éè¼ÆµÄ¡£
18¡¢ÒÔ¹ã¶ÈÓÅÏÈ»òÒÔ×îСºÄ·Ñ·½Ê½ËÑË÷ÎÊÌâ½âµÄËã·¨³ÆÎª ·ÖÖ§Ï޽編 ¡£ 19¡¢ ̰ÐÄÑ¡ÔñÐÔÖÊ ÊÇ̰ÐÄËã·¨¿ÉÐеĵÚÒ»¸ö»ù±¾ÒªËØ£¬Ò²ÊÇ̰ÐÄËã·¨Ó붯̬¹æ»®Ëã·¨µÄÖ÷񻂿±ð¡£
20.¿ìËÙÅÅÐòËã·¨ÊÇ»ùÓÚ ·ÖÖβßÂÔ µÄÒ»ÖÖÅÅÐòËã·¨¡£
21.¶¯Ì¬¹æ»®Ëã·¨µÄÁ½¸ö»ù±¾ÒªËØÊÇ. ×îÓÅ×ӽṹ ÐÔÖÊºÍ ÖØµþ×ÓÎÊÌâ ÐÔÖÊ ¡£ 22.»ØËÝ·¨ÊÇÒ»ÖּȴøÓРϵͳÐÔ ÓÖ´øÓÐ ÌøÔ¾ÐÔ µÄËÑË÷Ëã·¨¡£
23.·ÖÖ§Ï޽編Ö÷ÒªÓÐ ¶ÓÁÐʽ£¨FIFO£© ·ÖÖ§Ï޽編ºÍ ÓÅÏȶÓÁÐʽ ·ÖÖ§Ï޽編¡£ 24.·ÖÖ§Ï޽編ÊÇÒ»ÖּȴøÓРϵͳÐÔ ÓÖ´øÓÐ ÌøÔ¾ÐÔ µÄËÑË÷Ëã·¨¡£ 25.»ØËÝ·¨ËÑË÷½â¿Õ¼äÊ÷ʱ£¬³£ÓõÄÁ½ÖÖ¼ôÖ¦º¯ÊýΪ Ô¼Êøº¯Êý ºÍ Ï޽纯Êý ¡£ 26.ÈκοÉÓüÆËã»úÇó½âµÄÎÊÌâËùÐèµÄʱ¼ä¶¼ÓëÆä ¹æÄ£ Óйء£ 27.¿ìËÙÅÅÐòËã·¨µÄÐÔÄÜÈ¡¾öÓÚ »®·ÖµÄ¶Ô³ÆÐÔ ¡£
28.Ëùν̰ÐÄÑ¡ÔñÐÔÖÊÊÇÖ¸ ËùÇóÎÊÌâµÄÕûÌå×îÓŽâ¿ÉÒÔͨ¹ýһϵÁоֲ¿×îÓŵÄÑ¡Ôñ£¬
¼´Ì°ÐÄÑ¡ÔñÀ´´ïµ½ ¡£
29.Ëùν×îÓÅ×ӽṹÐÔÖÊÊÇÖ¸ ÎÊÌâµÄ×îÓŽâ°üº¬ÁËÆä×ÓÎÊÌâµÄ×îÓŽ⠡£ 30.»ØËÝ·¨ÊÇÖ¸ ¾ßÓÐÏ޽纯ÊýµÄÉî¶ÈÓÅÏÈÉú³É·¨ ¡£
31.ÓûØËÝ·¨½âÌâµÄÒ»¸öÏÔÖøÌØÕ÷ÊÇÔÚËÑË÷¹ý³ÌÖж¯Ì¬²úÉúÎÊÌâµÄ½â¿Õ¼ä¡£ÔÚÈκÎʱ¿Ì£¬Ëã·¨Ö»±£´æ´Ó¸ù½áµãµ½µ±Ç°À©Õ¹½áµãµÄ·¾¶¡£Èç¹û½â¿Õ¼äÊ÷ÖдӸù½áµãµ½Ò¶½áµãµÄ×·¾¶µÄ³¤¶ÈΪh(n)£¬Ôò»ØËÝ·¨ËùÐèµÄ¼ÆËã¿Õ¼äͨ³£Îª O(h(n)) £©¡£
32.»ØËÝ·¨µÄËã·¨¿ò¼Ü°´ÕÕÎÊÌâµÄ½â¿Õ¼äÒ»°ã·ÖΪ ×Ó¼¯Ê÷ Ëã·¨¿ò¼ÜÓë ÅÅÁÐÊ÷ Ëã·¨¿ò¼Ü¡£
33.ÓûØËÝ·¨½â0/1±³°üÎÊÌâʱ£¬¸ÃÎÊÌâµÄ½â¿Õ¼ä½á¹¹Îª ×Ó¼¯Ê÷ ½á¹¹¡£
34.ÓûØËÝ·¨½âÅú´¦Àí×÷Òµµ÷¶ÈÎÊÌâʱ£¬¸ÃÎÊÌâµÄ½â¿Õ¼ä½á¹¹Îª ÅÅÁÐÊ÷ ½á¹¹¡£ 35.ÂÃÐÐÊÛ»õÔ±ÎÊÌâµÄ½â¿Õ¼äÊ÷ÊÇ ÅÅÁÐÊ÷ ¡£
Èý¡¢Ëã·¨Ìî¿Õ
1.±³°üÎÊÌâµÄ̰ÐÄËã·¨
void Knapsack(int n,float M,float v[],float w[],float x[])
{//ÖØÁ¿Îªw[1..n]],¼ÛֵΪv[1..n]µÄ n¸öÎïÆ·£¬×°ÈëÈÝÁ¿ÎªMµÄ±³°ü //ÓÃ̰ÐÄËã·¨Çó×îÓŽâÏòÁ¿x[1..n] int i; Sort(n,v,w);
for (i=1;i<=n;i++) x[i]=0; float c=M;
for (i=1;i<=n;i++) {if (w[i]>c) break; x[i]=1; c-=w[i]; }
if (i<=n) x[i]=c/w[i];
}
2.×î´ó×ӶκÍ: ¶¯Ì¬¹æ»®Ëã·¨ int MaxSum(int n, int a[]) {
int sum=0, b=0£» //sum´æ´¢µ±Ç°×î´óµÄb[j], b´æ´¢b[j] for (int j=1£» j<=n£» j++) { if (b>0) b+= a[j] £»
else b=a[i]; £» //Ò»µ©Ä³¸öÇø¶ÎºÍΪ¸º£¬Ôò´ÓÏÂÒ»¸öλÖÃÀÛºÍ
if(b>sum) sum=b;
}
return sum£»
}
3.̰ÐÄËã·¨Çó»î¶¯°²ÅÅÎÊÌâ template
void GreedySelector(int n, Type s[], Type f[], bool A[]) {
A[1]=true; int j=1;
for (int i=2;i<=n;i++) if (s[i]>=f[j])
{ A[i]=true; j=i; }
else A[i]=false;
}
4.¿ìËÙÅÅÐò
template
void QuickSort (Type a[], int p, int r) {
if (p {int q=Partition(a,p,r); QuickSort (a,p,q-1); //¶Ô×ó°ë¶ÎÅÅÐò QuickSort (a,q+1,r); //¶ÔÓÒ°ë¶ÎÅÅÐò } } 5. »ØËÝ·¨½âÃÔ¹¬ÎÊÌâ ÃÔ¹¬ÓöþάÊý×é´æ´¢£¬ÓÃ'H'±íʾǽ,'O'±íʾͨµÀ int x1,y1,success=0; //³ö¿Úµã void MazePath(int x,int y) {//µÝ¹éÇó½â:ÇóÃÔ¹¬maze´ÓÈë¿Ú(x,y)µ½³ö¿Ú(x1,y1)µÄÒ»Ìõ·¾¶ maze[x][y]='*'; //·¾¶ÖÃΪ* if ((x==x1)&&(y==y1)) success=1; //µ½³ö¿ÚÔò³É¹¦ else {if (maze[x][y+1]=='O') MazePath(x,++y); //¶«ÁÚ·½¸ñÊÇͨ·,Ïò¶«³¢ÊÔ if ((!success)&&(maze[x+1][y]=='O')) MazePath(++x,y); //²»³É¹¦ÇÒÄÏÁÚ·½¸ñÊÇͨ·,ÏòÄϳ¢ÊÔ if ((!success)&&(maze[x][y-1]=='O')) MazePath(x,--y); //²»³É¹¦ÇÒÎ÷ÁÚ·½¸ñÊÇͨ·,ÏòÎ÷³¢ÊÔ if ((!success)&&(maze[x-1][y]=='O')) MazePath(--x,y); //²»³É¹¦ÇÒ±±ÁÚ·½¸ñÊÇͨ·,Ïò±±³¢ÊÔ } if (!success) maze[x][y]='@'; //ËÀºúͬÖÃΪ@ } ËÄ¡¢Ëã·¨Éè¼ÆÌâ 1. ¸ø¶¨ÒѰ´ÉýÐòÅźÃÐòµÄn¸öÔªËØa[0:n-1]£¬ÏÖÒªÔÚÕân¸öÔªËØÖÐÕÒ³öÒ»ÌØ¶¨ÔªËØx£¬·µ»ØÆäÔÚÊý×éÖеÄλÖã¬Èç¹ûδÕÒµ½·µ»Ø-1¡£ д³ö¶þ·ÖËÑË÷µÄËã·¨£¬²¢·ÖÎöÆäʱ¼ä¸´ÔÓ¶È¡£ template int BinarySearch(Type a[], const Type& x, int n) {//ÔÚa[0:n]ÖÐËÑË÷x£¬ÕÒµ½xʱ·µ»ØÆäÔÚÊý×éÖеÄλÖ㬷ñÔò·µ»Ø-1 Int left=0; int right=n-1; While (left<=right) {int middle=(left+right)/2; if (x==a[middle]) return middle; if (x>a[middle]) left=middle+1; else right=middle-1; } Return -1; } ʱ¼ä¸´ÔÓÐÔΪO(logn) 2. ÀûÓ÷ÖÖÎË㷨д³öºÏ²¢ÅÅÐòµÄËã·¨£¬²¢·ÖÎöÆäʱ¼ä¸´ÔÓ¶È void MergeSort(Type a[], int left, int right) { if (left merge(a, b, left, i, right); //ºÏ²¢µ½Êý×éb copy(a, b, left, right); //¸´ÖÆ»ØÊý×éa } } Ëã·¨ÔÚ×Çé¿öϵÄʱ¼ä¸´ÔÓ¶ÈΪO(nlogn)¡£ 3.N»Êºó»ØËÝ·¨ bool Queen::Place(int k) { //¼ì²éx[k]λÖÃÊÇ·ñºÏ·¨ for (int j=1;j if ((abs(k-j)==abs(x[j]-x[k]))||(x[j]==x[k])) return false; return true; } void Queen::Backtrack(int t) { if (t>n) sum++; else for (int i=1;i<=n;i++) {x[t]=i; if ( Ô¼Êøº¯Êý ) Backtrack(t+1); } } 4.×î´óÍÅÎÊÌâ void Clique::Backtrack(int i) // ¼ÆËã×î´óÍÅ { if (i > n) { // µ½´ïÒ¶½áµã