Ëã·¨Éè¼ÆÓë·ÖÎöϰÌâ´ð°¸1-6ÕÂ

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 using namespace std;

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 using namespace std;

int partions(int b[],int low,int high) {

int prvotkey=b[low];

b[0]=b[low]; while (low

while (low=prvotkey) --high;

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 using namespace std; const int n=8;

void partions(int a[],int low,int high) { //½øÐÐÒ»ÌË¿ìÅÅ int prvotkey=a[low]; a[0]=a[low]; while (low

ÁªÏµ¿Í·þ£º779662525#qq.com(#Ìæ»»Îª@)