|
ru.algorithms- RU.ALGORITHMS ---------------------------------------------------------------- From : Comoderator Of Ru Algorithms 2:5002/46.4 10 Apr 2003 08:01:18 To : All Subject : 2 faq -------------------------------------------------------------------------------- - ïpè ïpÿìîì ÁÏÔ: ïpè âûçîâå ôyíêöèè, x1 ñîäåæèò èñõîäíûé ñèãíàë (n òî÷åê), íà âûõîäå - x1 ñîäåpæèò âåùåñòâåííyþ ÷àñòü ïpåîápàçîâàíèÿ, y1 - ìíèìyþ. - ïpè îápàòíîì ñîîòâåòñòâåííî : íà âõîäå x1,y1 - ñîäåpæàò âåù. è ìíèìyþ ÷àñòè, íà âûõîäå x1 - ñîäåpæèò påçyëüòàò îápàòíîãî ÁÏÔ. Àìïëèòyäíûé ñïåêòp A=sqrt(x1^2+y1^2); Ôàçîâûé ñïåêòp F=arctg(y1/x1); Ðàññìàòpèâàòü ñïåêòp íyæíî äî ÷àñòîòû Hàéêâèñòà, òî åñòü 1/2 ÷àñòîòû äèñêpåòèçàöèè. Hy è íàêîíåö ÷àñòîòû ñïåêòpà îïpåäåëÿþòñÿ êàê 1/(T*n) ; Ò -ïåpèîä äèñêpåòèçàöèè, ñåê ; n - íîìåp òî÷êè. === Cut from bpf.cpp === #include<math.h> void bpf(double *x1,double *y1,int n,int m,int dir) { float pi=3.14159265; double arg; int le,le1; double u1=1.0; double u2=0.0; double sin_; double cos_; int ip; double t1; double t2; double t3; double t4; double u3; int nv2=n/2; int nm1=n-1; int j; int k; for(int l=1;l<=m;l++) { le=(int)floor((pow(2,(m+1-l)))); le1=le/2; arg = pi/(float)le1; u1=1.0; u2=0.0; cos_ = cos(arg); sin_ = sin(arg); if(dir) sin_ = -sin_; for(int j=1;j<=le1;j++) { for(int i=j;i<=n;i+=le) { ip=le1+i; t1=x1[i]+x1[ip]; t2=y1[i]+y1[ip]; t3=x1[i]-x1[ip]; t4=y1[i]-y1[ip]; x1[ip]=t3*u1-t4*u2; y1[ip]=t4*u1+t3*u2; x1[i]=t1; y1[i]=t2; }; u3=u1*cos_-u2*sin_; u2=u2*cos_+u1*sin_; u1=u3; }; }; for(int d=1;d<=nm1;d++) { if(d>=j) k=nv2; else { t1=x1[j]; t2=y1[j]; x1[j]=x1[d]; y1[j]=y1[d]; x1[d]=t1; y1[d]=t2; k=nv2; }; while(!(k>=j)) { j=j-k; k=k/2; }; j=j+k; }; if(dir) { for(int i=1;i<=n;i++) { x1[i]=x1[i]/n; y1[i]=y1[i]/n; }; }; }; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ Q27. Ãåíåòè÷åñêîå îáó÷åíèå íåéðîííûõ ñåòåé. A. (Yuri Burger, 2:468/85.3) ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ Ñ ñàìèì ïðèíöèïîì ÃÀ çíàêîì? Âîïùèì â íåéðîíêå èìååì êó÷ó (îáû÷íî ìàòðèöó :) âåñîâûõ êîýôôèöèåíòîâ. Ïåðåäåëóåì å¸ â âåêòîð äëÿ ÃÀ (îáû÷íî ýòî äâîè÷íàÿ ñòðîêà). Ñîîòâåòñòâåííî îïðåäåëÿåì æèçíåñòîéêîñòü âåêòîðà (ïðîñòàÿ îöåíêà íåéðîíêè â çàâ. îò öåëè). Òàê äåëàåì N ðàç (âåñà çàïîëíåíû îò ðàíäîìà). Ïîòîì ïî ÃÀ - ñêðåùèâàåì/ìóòèðóåì âåêòîðà, ïðèáèâàåì íåæèçíåñòîéêèå, ïåðåîöåíèâàåì âåêòîðà, ïîâòîðÿåì âñ¸ ñíà÷àëà äî òåõ ïîð, ïîêà íå "ðîäèòñÿ" âåêòîð, ñåòåâîé ýêâèâàëåíò êîòîðîãî íàñ óäîâëåòâîðÿåò :) Âîò, âðîäå è âñ¸. Òîêà ýòî äåëî æðó÷åå áóäåò - ïàìÿòè íàäî ìíîãî. IT> Çàáàâíî. À êàê ðàñøèôðîâûâàåòñÿ "ÃÀ"? Ãåíåòè÷åñêèé àëãîðèòì? Óãó. Hî âîîáùåò, åñëè áûòü áîëåå òî÷íûì, ãåí. àëãîðèòì ðàáîòàåò ÷óòü ïî äðóãîìó. Îïèñàí áûë... äàæ íå ïîìíþ êàê íàçûâàåòñÿ... êàæèñü ïðîñòî ãåíåòè÷åñêèé ìåòîä... èëü åùå êàê.. À ÃÀ, èìõî, òîæ ñàìîå, íî ìîäèôèöèðîâàí äëÿ ìîäåëèðóþùèõ ñèñòåì è ò.ä. IT> À êàê ïðîèçâîäèòñÿ ñìåøèâàíèå è ìóòèðîâàíèå? Hó ñ ìóòèðîâàíèåì ïðîñòî - åñëè âåêòîð áèíàðíûé, òî ïðîñòî îò áàëäû áåðåòñÿ òî÷êà íà âåêòîðå è èíâåðòèðóåòñÿ. À ñêðåùèâàíåé ìîæíî ïî ðàçíîìó äåëàòü. ß þçàë òàêîå - îò áàëäû áåðåì òî÷êó äëÿ äâóõ âåêòîðîâ è ïîëó÷àåì òðåòèé, çàïèñàâ â íå¸ âñ¸ ÷òî äî òî÷êè èç ïåðâîãî è âñ¸ ÷òî ïîñëå - èç âòîðîãî. Ýòî, êñòà, îäíà èç ïðè÷èí, ïî÷åìó ìåòîä íàçâàí ãåíåòè÷åñêèì - ïðèíöèï ñêðåùèâàíèÿ ïî÷òè êàê ó æèâûõ îðãàíèçìîâ. Âòîðàÿ ïðè÷èíà - ïðèìåíåíèå ýâîëþöèè èëè åñòåñòâåííîãî îòáîðà. Ïðèìåðíî, èäåÿ ÃÀ/ÃÌ ñâîäèòñÿ ê ïðåäïîëîæåíèþ, ÷òî èç "õîðîøèõ" ðåøåíèé ìîæíî ïîëó÷èòü åùå áîëåå "ëó÷øåå". IT> À ãäå ýòî óñïåøíåå ïðèìåíÿåòñÿ? Òàì ãäå óæå íè÷åãî äðóãîãî ñäåëàòü íèçÿ :) Âîò õîòÿá ÿ äåëàë äëÿ ïîèñêà ìàêñèìóìà íåëèíåéíîé ìóíêöèè îò 2õ ïàðàìåòðîâ. Hó âëîì áûëî èçó÷àòü ñóùåñòâóþùèå ìåòîäû. À ÃÀ/ÃÌ ÿ çà ÷àñ íàïèñàë è âñ¸ ðàáîòàëî òèï-òîï ;)  ÷åì è ñîëü - ìåòîä îîîî÷åíü ïðîçðà÷íûé è ëåãêî-ðåàëèçóåìûé... Hî ïðè ýòîì äîêàçàòü åãî âåðíîñòü è ò.ä., èìõî, íåâîçìîæíî. Ïîýòîìó ëó÷øå ïðèìåíèòü òàì, ãäå àëüòåðíàòèâîé ìîæåò áûòü òîëüêî ñòàõîñòè÷åñêèå ìåòîäû - ÷òîá íå ïðèøëîñü äîêàçûâàòü ïðàâèëüíîñòü ñâîåãî. À ïðàêòèêà ïîêàçûâàåò, ÷òî ÃÀ ëó÷øå ñòàõîñòè÷åñêèõ ìåòîäîâ. Åñòü ïðàâäà ó íåãî îäèí èçúÿí - îí î÷åíü ïëîõî ïåðåâàðèâàåò ñëó÷àè, êîãäà ïðîñòðàíñâî çíà÷åíèé îöåíîê ðåøåíèÿ íåâåëèêî. Òîåñòü, åñëè åñòü îöåíêà òèïà "ðåøåíèå âåðíî" è "ðåøåíèå íåâåðíî" òî ÃÀ òóò íå áóäåò ðàáîòàòü :( Ïðàâäà è çàäà÷ òàêèõ íå òàê óæ ìíîãî. Ïîêà ÷òî ÿ âèäåë ïðèìåíåíèå ÃÀ/ÃÌ äëÿ îïòèìèçàöèîííûõ çàäà÷, çàäà÷ íàõîæäåíèÿ ôóíêöèé è îáó÷åíèÿ HÑ. Ïðàâäà ïîñëåäíèÿ 2 ñëó÷àÿ ïðèâîäÿòñÿ ê ïåðâîìó :) ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ Q28. Òî÷êà â ìíîãîóãîëüíèêå A. (Mihail Popov, 2:5026/61.13) ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ VB> Ãðíèöà ìíîãîóãîëüíèêà P çàäàåòñÿ êîîðäèíàòàìè âåðøèí, ïåðå÷èñåííûìè â VB> ïîðÿäêå îáõîäà ïî ÷àñîâîé ñòðåëêå (x1,y1),... (xN,yN). Hàïèøèòå VB> ïðîãðàììó, ïðîâåðÿùóþ, ëåæèò ëè òî÷êà (x,y) âíåòðè P. Âñå óïîìÿíóòûå VB> êîîðäèíàòû öåëî÷èñëåííûå. === Cut === PROGRAM PolyFill; USES GRAPH,CRT; VAR VX1,VY1,VX2,VY2 : INTEGER; R,GD,GM,C,I,J,X,Y : INTEGER; N : STRING; AREA : ARRAY [1..9] OF POINTTYPE; PROCEDURE DRAWPOINTS; BEGIN FOR I:=1 TO J-1 DO BEGIN SETCOLOR(7); CIRCLE(AREA[I].X,AREA[I].Y,2); STR(I,N);SETCOLOR(15); OUTTEXTXY(AREA[I].X,AREA[I].Y,N); SETCOLOR(7); END;END; BEGIN GD:=VGA;GM:=VGAHI;INITGRAPH(GD,GM,'C:\TP70\BGI'); J:=1; AREA[J].X:=20;AREA[J].Y:=0;INC(J); AREA[J].X:=0;AREA[J].Y:=100;INC(J); AREA[J].X:=80;AREA[J].Y:=150;INC(J); AREA[J].X:=120;AREA[J].Y:=60;INC(J); AREA[J].X:=80;AREA[J].Y:=10;INC(J); AREA[J].X:=AREA[1].X;AREA[J].Y:=AREA[1].Y; FOR X:=0 TO 150 DO BEGIN FOR Y:=0 TO 150 DO BEGIN R:=0; FOR I:=1 TO J DO BEGIN VX1:=AREA[I].X-X; VY1:=AREA[I].Y-Y; VX2:=AREA[I+1].X-X; VY2:=AREA[I+1].Y-Y; GM:=VX1*VY2-VX2*VY1; IF GM<0 THEN INC(R); END; C:=1;IF R=J THEN C:=3; PUTPIXEL(X,Y,C); END;END; DRAWPOINTS; SETCOLOR(15);OUTTEXTXY(0,470,'PRESS ANY KEY'); READKEY; CLOSEGRAPH; END. === Cut === PS: Çäåñü ìíîãîóãîëüíèê çàêðàøèâàåòñÿ ïóòåì ïðîâåðêè ëåæèò ëè òî÷êà âíóòðè. ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ Q29. Wavelet-ïðåîáðàçîâàíèÿ A. (Evgenij Masherov, 2:5020/175.2 è Yury Reshetov, 2:5085/131.6) ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ AP> Hyæeí aëãopèòì caáæa. Ñìîòpÿ ÷òî òû ïîä ñàáæåì ïîäpàçóìåâàåøü, ïîñêîëüêó ýòî öåëîå íàïpàâëåíèå â ìàòåìàòèêå. Áûë öåëûé öèêë ñòàòåé â Êîìïüþòåppå, ïpàêòè÷åñêè âåñü íîìåp áûë ïîñâÿùåí ñàáæó, ãäå â äîâîëüíî ñæàòîé ôîpìå pàçíûå àâòîpû äåëèëèñü î ïpèêëàäíîì ïpèìåíåíèè. Åñëè âêpàòöå, òî îïpåäåëåíèå wavelet çâó÷èò òàê - ýòî äâóìåpíàÿ ôóíêöèÿ íà îòpåçêå, îïpåäåëåííûé èíòåãpàë êîòîpîé pàâåí íóëþ, àìïëèòóäà ôóíêöèè ñòpåìèòåëüíî óáûâàåò ê êpàÿì äàííîãî îòpåçêà. Ñóùåñòâóåò íåñêîëüêî âèäîâ ïpåîápàçîâàíèé.  êà÷åñòâå âõîäíûõ äàííûõ áåpåì íåêóþ ïåpèîäè÷åñêóþ ôóíêöèþ f(x), êîòîpóþ ñîáèpàåìñÿ ïpåîápàçîâàòü è wavelet ôóíêöèþ w(x) c ïîìîùüþ êîòîpîé ïpîèçâîäèòñÿ ïpåîápàçîâàíèå. 1. Òpåõìåpíîå ïpåîápàçîâàíèå. Ñäâèãàåì w(x) îòíîñèòåëüíî f(x) ïî âñåìó ó÷àñòêó õ îò 0 äî 2*PI. Ïpè ýòîì íà êàæäîì ñäâèãå ïåpåìíîæàåì ñîâïàäàþùèå òî÷êè íà îñè õ îáåèõ ôóíêöèé, ýòè ïpîèçâåäåíèÿ ñóììèpóåì è ïîëó÷àåì íåêèé êîýôôèöèåíò. Ïpîéäÿñü ïî õ äî 2*PI ïîëó÷àåì òpåòüþ ôóíêöèþ z(x), çíà÷åíèÿìè êîòîpîé ñëóæàò ýòè ñàìûå êîýôôèöèåíòû. Äàëåå, pàñòÿãèâàåì w(x) âäîëü õ íà âåëè÷èíó ãàpìîíèêè è ïpîäåëûâàåì ñ íåé òó æå ñàìóþ îïåpàöèþ. È ò.ä. äëÿ âñåõ èñêîìûõ ãàpìîíèê.  påçóëüòàòå ïîëó÷àåì íåêèé òpåõìåpíûé ìàêåò wavelet ïpåîápàçîâàíèÿ. Åãî îñîáåííîñòü â îòëè÷èå îò ïpåîápàçîâàíèÿ Ôópüå â òîì, ÷òî påçóëüòàò ñîäåpæèò áîëüøå èíôîpìàöèè î èñõîäíîé ôóíêöèè. 2. Wavelet ñïåêòp. Ôóíêöèÿ ïîëó÷åííàÿ èç ïpåäûäóùåãî ïpåîápàçîâàíèÿ, íî â êà÷åñòâå àpãóìåíòà ñîäåpæàùàÿ íîìåpà ãàpìîíèê, à â êà÷åñòâå çíà÷åíèé ôóíêöèè îïpåäåëåííûé èíòåãpàë z(x) äëÿ äàííîé ãàpìîíèêè. Wavelet ñïåêòp ìîæíî ïîëó÷èòü è áîëåå ïpîñòûì ìåòîäîì, à èìåííî pàçëîæèòü èñëåäóåìóþ ôóíêöèþ ñïåêòpàëüíûì àíàëèçîì ñ ïîìîùüþ ïpåîápàçîâàíèÿ Ôópüå, à ïîòîì â êà÷åñòâå åå çíà÷åíèé âçÿòü påçóëüòàò äåëåíèÿ ãàpìîíèêè íà íóëåâóþ ãàpìîíèêó. Åñëè óæ áûòü ÷åñòíûì äî êîíöà, òî wavelet ïpåîápàçîâàíèå, ïî ìîåìó ëè÷íîìó ìíåíèþ - pàçäóòàÿ òåìà ñ ïîìîùüþ êîòîpîé íåêîòîpûå "ìàòåìàòèêè" ïûòàþòñÿ ñîîpóäèòü èç ìóõè ñëîíà. Hà ïpàêòèêå ìíîãîêpàòíî ïpèõîäèëîñü óáåæäàòüñÿ, ÷òî ñïåêòpàëüíûé àíàëèç äàåò ïîëíóþ è äîñòàòî÷íóþ èíôîpìàöèþ î èññëåäóåìîé ôóíêöèè, a wavelet äàåò îãpîìíîå êîëè÷åñòâî øóìîâ, êîòîpûå àâòîpû äàííûõ ìåòîäèê è âûäàþò çà èçáûòî÷íîñòü èíôîpìàöèè. Ïîýòîìó ÿ â ñâîåé ïpàêòèêå ïpåäïî÷èòàþ ñòàpîãî è äîápîãî Ôópüå âñÿêèì íîâîìîäíûì "îòêpûòèÿì". Âîò ïðîãðàììêà îäíîãî èç âàðèàíòîâ âåéâëåò-ïðåîáðàçîâàíèÿ (ïðÿìîãî è îáðàòíîãî) #include <stdlib.h> #include <math.h> double C[4]={0.4829629131445341, 0.8365163037378079, 0.2241438680420134,-0.1294095225512604}; int K=0; void wavdir(double a[]) { int i,j,k,nn,nh; double w[512]; for(nn=512;nn>=4;nn>>=1) { nh=nn>>1; for(i=0,j=0; j<=nn-4;j+=2,i++) { w[i ]=C[0]*a[j]+C[1]*a[j+1]+C[2]*a[j+2]+C[3]*a[j+3]; w[i+nh]=C[3]*a[j]-C[2]*a[j+1]+C[1]*a[j+2]-C[0]*a[j+3]; } w[i ]=C[0]*a[nn-2]+C[1]*a[nn-1]+C[2]*a[0]+C[3]*a[1]; w[i+nh]=C[3]*a[nn-2]-C[2]*a[nn-1]+C[1]*a[0]-C[0]*a[1]; for(i=0;i<nn;i++) a[i]=w[i]; } } void wavinv(double a[]) { int i,j,k,nn,nh,nh1; double w[512]; for(nn=4;nn<=512;nn<<=1) { nh=nn>>1; nh1=nh+1; w[0]=C[2]*a[nh-1]+C[1]*a[nn-1]+C[2]*a[0]+C[3]*a[nh1-1]; w[1]=C[3]*a[nh-1]-C[0]*a[nn-1]+C[1]*a[0]-C[2]*a[nh1-1]; for(i=0,j=2; i<nh-1; i++) { w[j++]=C[2]*a[i]+C[1]*a[i+nh]+C[0]*a[i+1]+C[3]*a[i+nh1]; w[j++]=C[3]*a[i]-C[0]*a[i+nh]+C[1]*a[i+1]-C[2]*a[i+nh1]; } for(i=0;i<nn;i++) a[i]=w[i]; } } ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ Q30. Âîçðàñòàþùàÿ ïîñëåäîâàòåëüíîñòü. A. ((q)Aleksey Gallyamov, 2:5079/53.19(a)) ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ Äàíà ïîñëåäîâàòåëüíîñòü ÷èñåë. Hóæíî íàéòè â íåé ñàìóþ áîëüøóþ íåóáûâàþùóþ ïîñëåäîâàòåëüíîñòü ÷èñåë ïóò¸ì âû÷¸ðêèâàíèÿ ëþáîãî êîë-âà ëþáûõ ÷èñåë. Hàïðèìåð: 3 0 2 7 8 3 5 4 6 7 2 0 3 1  ýòîé ïîñëåäîâàòåëüíîñòè ñàìàÿ áîëüøàÿ ýòî: _ 0 2 _ _ 3 _ 4 6 7 _ _ _ _ Hóæåí ñàìûé áûñòðûé è íå ñëîæíûé àëãîðèòì (èëè èñõîäíèê íà ïàñå). Òî ÷òî ÿ ïðèäóìàë ðàáîòàåò _î÷åíü_ ìåäëåííî. Ðåêóðñèâíàÿ ïðîöåäóðà, êîòîðàÿ íà ïàñå âûãëÿäèò òàê: var A: array[1..100]of Integer; const Chain: Integer = 0; procedure BigChain(nn, count: Integer); var i: Integer; begin Inc(count); if chain<count then chain:=count; for i:=nn+1 to 100 do if A[i]>A[nn] then BigChain(i, count); end; var i: Integer; begin for i:=1 to 99 do BigChain(i, 0); WriteLn('Ñàìàÿ áîëüøàÿ íåóáûâàþùàÿ ïîñëåäîâàòåëüíîñòü ñîñòîèò èç ', chain, ' ÷èñåë.'); end. (òóò ÿ ïîêàçàë íàõîæäåíèå òîëüêî êîë-âà ñàìîãî áîëüøîãî ñàáæà) òàêàÿ êîíñòðóêöèÿ íà ìî¸ì 200 ïíå ðàáîòàåò îêîëî ìèíóòû (!!) :::(((( ÎÒ ÐÅÄÀÊÖÈÈ ÔÀÊ: Ïðîãðàììêó íóæíî óñîâåðøåíñòâîâàòü, äîáàâèâ òàáëèöó, êóäà áóäóò çàíîñèòüñÿ ðåçóëüòàòû ýòîé ðåêóðñèâíîé ôóíêöèè, ÷òîáû íåñêîëüêî ðàç åå íå âûçûâàòü çàçðÿ. ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ === Êîíåö q_21-30.txt === Comoderator ... Ïëîõ òîò ñîëäàò, êîòîðûé íå õî÷åò ñïàòü ñ ãåíåðàëîì. --- GoldED+/386 1.1.4.7 * Origin: Âñ¸ôèãíÿ êðîìå ï÷¸ë,õîòÿ ï÷¸ëû,åñëèïîäóìàòü,òîæå ôèãíÿ (2:5002/46.4) Âåðíóòüñÿ ê ñïèñêó òåì, ñîðòèðîâàííûõ ïî: âîçðàñòàíèå äàòû óìåíüøåíèå äàòû òåìà àâòîð
Àðõèâíîå /ru.algorithms/27623e942a58.html, îöåíêà èç 5, ãîëîñîâ 10
|