using namespace std;
int data[100];
//ÔÚm¸öÊýÖÐÊä³ön¸öÅÅÁÐÊý£¨n<=m£© void DPpl(int num,int m,int n,int depth) {
if(depth==n) {
for(int i=0;i for(int j=0;j if((num&(1< DPpl(num+(1< int main() { DPpl(0,5,1,0); DPpl(0,5,2,0); DPpl(0,5,3,0); DPpl(0,5,4,0); DPpl(0,5,5,0); return 0; } 8. Éè¼Æ·ÖÖÎËã·¨Çó½âһά¿Õ¼äÉÏn¸öµãµÄ×î½ü¶ÔÎÊÌâ¡£ ²Î¼û4.4.1×î½ü¶ÔÎÊÌâµÄËã·¨·ÖÎö¼°Ë㷨ʵÏÖ 9. ÔÚÓÐÐòÐòÁÐ(r1, r2, ?, rn)ÖУ¬´æÔÚÐòºÅi£¨1¡Üi¡Ün£©£¬Ê¹µÃri=i¡£ÇëÉè¼ÆÒ»¸ö·ÖÖÎËã·¨ÕÒµ½Õâ¸öÔªËØ£¬ÒªÇóËã·¨ÔÚ×Çé¿öϵÄʱ¼äÐÔÄÜΪO(log2n)¡£ //ÔÚÓÐÐòÊý×éÖÐ //²ÉÓöþ·Ö·¨²éÕÒ·ûºÏÌõ¼þµÄÔªËØ #include void Findnum(int *a,int n) { int low=0; int high=n-1; while(low<=high) { int mid=(low+high)/2; if(a[mid]==mid) { cout<<\Õâ¸öÊýÊÇ£º \ break; } else if(a[mid]>mid) high=mid-1; else low=mid+1; } } int main() { int a[7]={1,0,2,5,6,7,9}; Findnum(a,7); return 0; } ʱ¼ä¸´ÔÓ¶ÈΪO(log2n)¡£ 10. ÔÚÒ»¸öÐòÁÐÖгöÏÖ´ÎÊý×î¶àµÄÔªËØ³ÆÎªÖÚÊý¡£ÇëÉè¼ÆË㷨ѰÕÒÖÚÊý²¢·ÖÎöËã·¨µÄʱ¼ä¸´ÔÓÐÔ¡£ //ÏȶÔÐòÁнøÐпìËÙÅÅÐò //ÔÙ½øÐÐÒ»´Î±éÀú //Êä³öÖÚÊýµÄÖØ¸´´ÎÊý #include int partions(int b[],int low,int high) { int prvotkey=b[low]; b[0]=b[low]; while (low while (low b[low]=b[high]; while (low b[high]=b[low]; } b[low]=b[0]; return low; } void qsort(int l[],int low,int high) { int prvotloc; if(low prvotloc=partions(l,low,high); //½«µÚÒ»´ÎÅÅÐòµÄ½á¹û×÷ΪÊàÖá qsort(l,low,prvotloc-1); //µÝ¹éµ÷ÓÃÅÅÐò ÓÉlow µ½prvotloc-1 qsort(l,prvotloc+1,high); //µÝ¹éµ÷ÓÃÅÅÐò ÓÉ prvotloc+1µ½ high } } void quicksort(int l[],int n) { qsort(l,1,n); //µÚÒ»¸ö×÷ΪÊàÖá £¬´ÓµÚÒ»¸öÅŵ½µÚn¸ö } int main() { int a[10]={1,2,3,5,3,3,3,2,5,1}; int i=0; int count=0; int max=0;//max±íʾ³öÏֵĴÎÊý qsort(a,0,10); while(i<10) { int j; j=i+1; if(a[i]=a[j]&&i<10) { count++; i++; } if(count>max) { max=count; count=0; } }//while cout<<\ÖØ¸´´ÎÊý£º\ return 0; } ʱ¼ä¸´ÔÓ¶Ènlog(n) 11. ÉèMÊÇÒ»¸ön¡ÁnµÄÕûÊý¾ØÕ󣬯äÖÐÿһÐУ¨´Ó×óµ½ÓÒ£©ºÍÿһÁУ¨´ÓÉϵ½Ï£©µÄÔªËØ¶¼°´ÉýÐòÅÅÁС£Éè¼Æ·ÖÖÎË㷨ȷ¶¨Ò»¸ö¸ø¶¨µÄÕûÊýxÊÇ·ñÔÚMÖУ¬²¢·ÖÎöËã·¨µÄʱ¼ä¸´ÔÓÐÔ¡£ 12. ÉèSÊÇn£¨nΪżÊý£©¸ö²»µÈµÄÕýÕûÊýµÄ¼¯ºÏ£¬ÒªÇ󽫼¯ºÏS»®·ÖΪ×Ó¼¯S1ºÍS2£¬Ê¹µÃ| S1|=| S2|=n/2£¬ÇÒÁ½¸ö×Ó¼¯ÔªËØÖ®ºÍµÄ²î´ïµ½×î´ó¡£ //ÏÈÓÿìËÙÅÅÐò½øÐÐÒ»ÌËÅÅÐò //Èç¹ûs1£¨´óµÄÊý¼¯£©µÄµÄ¸öÊý´óÓÚn/2 //½«£¨i<=n/2-low-1£©¸ö×îСµÄÊýÅŵ½ºóÃæ //Èç¹ûs1£¨´óµÄÊý¼¯£©µÄµÄ¸öÊýСÓÚn/2 //½«s2£¨Ð¡µÄÊý¼¯£©n/2-low-1Åŵ½Ç°Ãæ //½«ÅźõÄÊý×éµÄǰn/2¸öÊý¸³Öµ¸øs1 //½«ÅźõÄÊý×éµÄºón/2¸öÊý¸³Öµ¸øs2 #include void partions(int a[],int low,int high) { //½øÐÐÒ»ÌË¿ìÅÅ int prvotkey=a[low]; a[0]=a[low]; while (low