Скачиваний:
70
Добавлен:
26.05.2014
Размер:
13.89 Кб
Скачать

рТПЗТБННЙТПЧБОЙЕ ОБ СЪЩЛЕ уйA.noneline{font-family:Arial,Serif;text-decoration:none;}FONT.arial{font-family:Arial,Serif;}TD.arial{font-family:Arial,Serif;}TH.arial{font-family:Arial,Serif;}PRE{font-family:Monospace;color:navy;}SAMP{font-family:Monospace;color:navy;}TT{font-family:Monospace;color:navy;}VAR{font-family:Monospace;color:navy;}

уЕТЧЕТ РПДДЕТЦЙЧБЕФУС

гЕОФТПН йОЖПТНБГЙПООЩИ фЕИОПМПЗЙК

(095) 932-9212, 932-9213, 939-0783

E-mail: info@citforum.ruуЕТЧЕТ йОЖПТНБГЙПООЩИ фЕИОПМПЗЙК УПДЕТЦЙФ НПТЕ(!) БОБМЙФЙЮЕУЛПК ЙОЖПТНБГЙЙ2.4. тЕЛХТУЙСжХОЛГЙС ОБЪЩЧБЕФУС ТЕЛХТУЙЧОПК, ЕУМЙ ЧП ЧТЕНС ЕЕ ПВТБВПФЛЙ ЧПЪОЙЛБЕФ ЕЕ РПЧФПТОЩК ЧЩЪПЧ, МЙВП ОЕРПУТЕДУФЧЕООП, МЙВП ЛПУЧЕООП, РХФЕН ГЕРПЮЛЙ ЧЩЪПЧПЧ ДТХЗЙИ ЖХОЛГЙК.рТСНПК (ОЕРПУТЕДУФЧЕООПК) ТЕЛХТУЙЕК СЧМСЕФУС ЧЩЪПЧ ЖХОЛГЙЙ ЧОХФТЙ ФЕМБ ЬФПК ЖХОЛГЙЙ. int a() {.....a().....}лПУЧЕООПК ТЕЛХТУЙЕК СЧМСЕФУС ТЕЛХТУЙС, ПУХЭЕУФЧМСАЭБС ТЕЛХТУЙЧОЩК ЧЩЪПЧ ЖХОЛГЙЙ РПУТЕДУФЧПН ГЕРПЮЛЙ ЧЩЪПЧБ ДТХЗЙИ ЖХОЛГЙК. чУЕ ЖХОЛГЙЙ, ЧИПДСЭЙЕ Ч ГЕРПЮЛХ, ФПЦЕ УЮЙФБАФУС ТЕЛХТУЙЧОЩНЙ.оБРТЙНЕТ: a(){.....b().....} b(){.....c().....} c(){.....a().....} .чУЕ ЖХОЛГЙЙ a,b,c СЧМСАФУС ТЕЛХТУЙЧОЩНЙ, ФБЛ ЛБЛ РТЙ ЧЩЪПЧЕ ПДОПК ЙЪ ОЙИ, ПУХЭЕУФЧМСЕФУС ЧЩЪПЧ ДТХЗЙИ Й УБНПК УЕВС.тБУУНПФТЙН ЪБДБЮХ П иБОПКУЛЙИ ВБЫОСИ. йНЕАФУС ФТЙ УФЕТЦОС У ОПНЕТБНЙ 1,2,3. оБ УФЕТЦЕОШ 1 ОБДЕФП n ДЙУЛПЧ ТБЪМЙЮОПЗП ДЙБНЕФТБ ФБЛ, ЮФП ПОЙ ПВТБЪХАФ РЙТБНЙДХ (УН.ТЙУ.31). оБРЙУБФШ РТПЗТБННХ ДМС РЕЮБФЙ РПУМЕДПЧБФЕМШОПУФЙ РЕТЕНЕЭЕОЙК ДЙУЛПЧ УП УФЕТЦОС ОБ УФЕТЦЕОШ, ОЕПВИПДЙНЩИ ДМС РЕТЕОПУБ РЙТБНЙДЩ УП УФЕТЦОС 1 ОБ УФЕТЦЕОШ 3 РТЙ ЙУРПМШЪПЧБОЙЙ УФЕТЦОС 2 Ч ЛБЮЕУФЧЕ ЧУРПНПЗБФЕМШОПЗП. рТЙ ЬФПН ЪБ ПДОП РЕТЕНЕЭЕОЙЕ ДПМЦЕО РЕТЕОПУЙФШУС ФПМШЛП ПДЙО ДЙУЛ, Й ДЙУЛ ВПМШЫЕЗП ДЙБНЕФТБ ОЕ ДПМЦЕО РПНЕЭБФШУС ОБ ДЙУЛ НЕОШЫЕЗП ДЙБНЕФТБ. дПЛБЪБОП, ЮФП ДМС n ДЙУЛПЧ НЙОЙНБМШОПЕ ЮЙУМП ОЕПВИПДЙНЩИ РЕТЕНЕЭЕОЙК ТБЧОП 2^n-1.

тЙУ.31. ъБДБЮБ П иБОПКУЛЙИ ВБЫОСИ.дМС ТЕЫЕОЙС РТПУФЕКЫЕЗП УМХЮБС ЪБДБЮЙ, ЛПЗДБ РЙТБНЙДБ УПУФПЙФ ФПМШЛП ЙЪ ПДОПЗП ДЙУЛБ, ОЕПВИПДЙНП ЧЩРПМОЙФШ ПДОП ДЕКУФЧЙЕ - РЕТЕОЕУФЙ ДЙУЛ УП УФЕТЦОС i ОБ УФЕТЦЕОШ j, ЮФП ПЮЕЧЙДОП (ЬФПФ РЕТЕОПУ ПВПЪОБЮБЕФУС i -> j). пВЭЙК УМХЮБК ЪБДБЮЙ ЙЪПВТБЦЕО ОБ ТЙУХОЛЕ, ЛПЗДБ ФТЕВХЕФУС РЕТЕОЕУФЙ n ДЙУЛПЧ УП УФЕТЦОС i ОБ УФЕТЦЕОШ j, УЮЙФБС УФЕТЦЕОШ w ЧУРПНПЗБФЕМШОЩН. уОБЮБМБ УМЕДХЕФ РЕТЕОЕУФЙ n-1 ДЙУЛ УП УФЕТЦОС i ОБ УФЕТЦЕОШ w РТЙ ЧУРПНПЗБФЕМШОПН УФЕТЦОЕ j, ЪБФЕН РЕТЕОЕУФЙ ПДЙО ДЙУЛ УП УФЕТЦОС i ОБ УФЕТЦЕОШ j Й, ОБЛПОЕГ, РЕТЕОЕУФЙ n-1 ДЙУЛ ЙЪ w ОБ УФЕТЦЕОШ j, ЙУРПМШЪХС ЧУРПНПЗБФЕМШОЩК УФЕТЦЕОШ i. йФБЛ, ЪБДБЮБ П РЕТЕОПУЕ n ДЙУЛПЧ УЧПДЙФУС Л ДЧХН ЪБДБЮБН П РЕТЕОПУЕ n-1 ДЙУЛБ Й ПДОПК РТПУФЕКЫЕК ЪБДБЮЕ. уИЕНБФЙЮЕУЛЙ ЬФП НПЦОП ЪБРЙУБФШ ФБЛ: T(n,i,j,w) = T(n-1,i,w,j), T(1,i,j,w), T(n-1,w,j,i). i n-1 w n-1 j + | -------->-+|+--------->+ | n-1| | I ||| ы | | + / \ / \ / \ +-/-----\-+ / \ +-/-----\-+ ==+----|----+===/=========\====+----|----+====== +-------------->-------------+ р тЙУ.32. уИЕНБ ТЕЫЕОЙС ЪБДБЮЙ П иБОПКУЛЙИ ВБЫОСИ.оЙЦЕ РТЙЧЕДЕОБ РТПЗТБННБ, ЛПФПТБС ЧЧПДЙФ ЮЙУМП n Й РЕЮБФБЕФ УРЙУПЛ РЕТЕНЕЭЕОЙК, ТЕЫБАЭБС ЪБДБЮХ П иБОПКУЛЙИ ВБЫОСИ РТЙ ЛПМЙЮЕУФЧЕ ДЙУЛПЧ n. йУРПМШЪХЕФУС ЧОХФТЕООСС ТЕЛХТУЙЧОБС РТПГЕДХТБ tn(n,i,j,w), РЕЮБФБАЭБС РЕТЕНЕЭЕОЙС, ОЕПВИПДЙНЩЕ ДМС РЕТЕОПУБ n ДЙУЛПЧ УП УФЕТЦОС i ОБ УФЕТЦЕОШ j У ЙУРПМШЪПЧБОЙЕН ЧУРПНПЗБФЕМШОПЗП УФЕТЦОС w РТЙ {i,j,w} = {1,3,2}. /* ИБОПКУЛЙЕ ВБЫОЙ */ #include main() /* ЧЩЪЩЧБАЭБС */ { void tn(int, int, int, int); /* ЖХОЛГЙС */ int n; scanf(" %d",&n); tn(n,1,2,3); } void tn(int n, int i, int j, int w) /* ТЕЛХТУЙЧОБС */ { if (n>1) /* ЖХОЛГЙС */ { tn (n-1,i,w,j); tn (1,i,j,w); tn (n-1,w,j,i); } else printf(" \n %d -> %d",i,j); return ; }рПУМЕДПЧБФЕМШОПУФШ ЧЩЪПЧПЧ РТПГЕДХТЩ tn РТЙ m=3 ЙММАУФТЙТХЕФУС ДТЕЧПЧЙДОПК УФТХЛФХТПК ОБ ТЙУ.33. лБЦДЩК ТБЪ РТЙ ЧЩЪПЧЕ РТПГЕДХТЩ tn РПД РБТБНЕФТЩ n, i, j, w ЧЩДЕМСЕФУС РБНСФШ Й ЪБРПНЙОБЕФУС НЕУФП ЧПЪЧТБФБ. рТЙ ЧПЪЧТБФЕ ЙЪ РТПГЕДХТЩ tn РБНСФШ, ЧЩДЕМЕООБС РПД РБТБНЕФТЩ n, i, j, w, ПУЧПВПЦДБЕФУС Й УФБОПЧЙФУС ДПУФХРОПК РБНСФШ, ЧЩДЕМЕООБС РПД РБТБНЕФТЩ n, i, j, w РТЕДЩДХЭЙН ЧЩЪПЧПН, Б ХРТБЧМЕОЙЕ РЕТЕДБЕФУС Ч НЕУФП ЧПЪЧТБФБ.

тЙУ.33. рПУМЕДПЧБФЕМШОПУФШ ЧЩЪПЧПЧ РТПГЕДХТЩ tn.чП НОПЗЙИ УМХЮБСИ ТЕЛХТУЙЧОЩЕ ЖХОЛГЙЙ НПЦОП ЪБНЕОЙФШ ОБ ЬЛЧЙЧБМЕОФОЩЕ ОЕТЕЛХТУЙЧОЩЕ ЖХОЛГЙЙ ЙМЙ ЖТБЗНЕОФЩ, ЙУРПМШЪХС УФЕЛЙ ДМС ИТБОЕОЙС ФПЮЕЛ ЧЩЪПЧБ Й ЧУРПНПЗБФЕМШОЩИ РЕТЕНЕООЩИ.рТЕДРПМПЦЙН, ЮФП ЙНЕЕФУС УЙФХБГЙС: main() /* ЧЩЪЩЧБАЭБС ЖХОЛГЙС */ { ... f() ...} f() /* ТЕЛХТУЙЧОБС ЖХОЛГЙС */ { ... f() ...}ъДЕУШ Ч ЖХОЛГЙЙ main ЧЩЪЩЧБЕФУС ТЕЛХТУЙЧОБС ЖХОЛГЙС f. фТЕВХЕФУС ЪБНЕОЙФШ ПРЙУБОЙЕ ЖХОЛГЙЙ f Й ЕЕ ЧЩЪПЧБ ОБ ЬЛЧЙЧБМЕОФОЩК ЖТБЗНЕОФ РТПЗТБННЩ, Ф.Е. ХДБМЙФШ ЖХОЛГЙА f.рХУФШ ТЕЛХТУЙЧОБС ЖХОЛГЙС f ЙНЕЕФ РБТБНЕФТЩ т1,т2,...,тs, ЧОХФТЕООЙЕ РЕТЕНЕООЩЕ V1,V2,...,Vt Й Ч ЖХОЛГЙСИ main Й f ЙНЕЕФУС k ПВТБЭЕОЙК Л ЖХОЛГЙЙ f. дМС ХДБМЕОЙС ФБЛПК ЖХОЛГЙЙ ФТЕВХАФУС УМЕДХАЭЙЕ ДПРПМОЙФЕМШОЩЕ ПВЯЕЛФЩ:- РЕТЕНЕООЩЕ AR1,AR2,...,ARs, УПДЕТЦБЭЙЕ ЪОБЮЕОЙС ЖБЛФЙЮЕУЛЙИ РБТБНЕФТПЧ РТЙ ЧЩЪПЧЕ ЖХОЛГЙЙ f (ФЙРЩ РЕТЕНЕООЩИ ДПМЦОЩ УППФЧЕФУФЧПЧБФШ ФЙРБН РБТБНЕФТПЧ т1,т2,...,тs);- РЕТЕНЕООБС rz ДМС ЧЩЮЙУМСЕНПЗП ЖХОЛГЙЕК f ТЕЪХМШФБФБ (ФЙР РЕТЕНЕООЩИ УПЧРБДБЕФ У ФЙРПН ЧПЪЧТБЭБЕНПЗП ЪОБЮЕОЙС ЖХОЛГЙЙ f);- УФЕЛ, УПДЕТЦБЭЙК Ч УЕВЕ ЧУЕ РБТБНЕФТЩ Й ЧУЕ ЧОХФТЕООЙЕ РЕТЕНЕООЩЕ ЖХОЛГЙЙ f, Б ФБЛЦЕ РЕТЕНЕООХА lr ФЙРБ int, ДМС ИТБОЕОЙС ФПЮЛЙ ЧПЪЧТБФБ, Й РЕТЕНЕООХА pst ФЙРБ ХЛБЪБФЕМШ, ДМС ИТБОЕОЙС БДТЕУБ РТЕДЩДХЭЕЗП ЬМЕНЕОФБ УФЕЛБ;- ХЛБЪБФЕМШ dl ДМС ИТБОЕОЙС БДТЕУБ ЧЕТЫЙО УФЕЛБ;- РТПНЕЦХФПЮОЩК ХЛБЪБФЕМШ u ДМС ПРЕТБГЙК ОБД УФЕЛПН;- k ОПЧЩИ НЕФПЛ L1,...,Lk ДМС ПВПЪОБЮЕООЩИ ФПЮЕЛ ЧПЪЧТБФБ;- НЕФЛБ jf, ЙУРПМШЪХЕНБС ДМС ПВИПДБ НПДЙЖЙГЙТПЧБООПЗП ФЕМБ ЖХОЛГЙЙ f;- РТПНЕЦХФПЮОБС РЕТЕНЕООБС l ФЙРБ int ДМС РЕТЕДБЮЙ ОПНЕТБ ФПЮЛЙ ЧПЪЧТБФБ.юФПВЩ РПМХЮЙФШ ЬЛЧЙЧБМЕОФОХА ОЕТЕЛХТУЙЧОХА РТПЗТБННХ ВЕЪ ЖХОЛГЙЙ f, ОЕПВИПДЙНП ЧЩРПМОЙФШ УМЕДХАЭЙЕ ДЕКУФЧЙС:1. хВТБФШ ПВЯСЧМЕОЙЕ ЖХОЛГЙЙ f Ч ЖХОЛГЙА main;2. дПВБЧЙФШ Ч ЖХОЛГЙЙ main ПВЯСЧМЕОЙС РЕТЕНЕООЩИ AR1,AR2,...,ARs,RZ, ПВЯСЧМЕОЙС УФЕЛБ ST Й ХЛБЪБФЕМЕК dl Й u: typedef struct st { P1;P2;...;Ps;V1;V2;...;Vt; int lr; struct st *pst } ST; ST *dl=NULL, *u;3. нПДЙЖЙГЙТПЧБФШ ФЕМП ЖХОЛГЙЙ f ЧП ЖТБЗНЕОФ РТПЗТБННЩ. дМС ЬФПЗП УМЕДХЕФ:Б) ХДБМЙФШ ЪБЗПМПЧПЛ ЖХОЛГЙЙ f;В) ПВЯСЧМЕОЙС РБТБНЕФТПЧ Й ЧОХФТЕООЙИ РЕТЕНЕООЩИ Й ЪБНЕОЙФШ ЖТБЗНЕОФПН: goto jf; f: a=malloc(sizeof(ST)); a->P1=AR1; a->P2=AR2; ... ;a->Ps=ARs; a->lr=l; a->pst=dl; dl=a;Ч) Ч ЛПОГЕ ЖХОЛГЙЙ f РПУФБЧЙФШ НЕФЛХ JF, Б ЧУЕ ПВТБЭЕОЙС Л ЖПТНБМШОЩН БТЗХНЕОФБН ЪБНЕОЙФШ ПВТБЭЕОЙЕН, Л УППФЧЕФУФЧХАЭЙН ЬМЕНЕОФБН УФЕЛБ;З) ЧНЕУФП ЛБЦДПЗП ПРЕТБФПТБ return(y) Ч ЖХОЛГЙЙ f ЪБРЙУБФШ ЖТБЗНЕОФ: RZ=y; l=dl->lr; a=dl; dl=a->pst; free(a); switch(l) { case 1: goto L1; case 2: goto L2; ... case k: goto Lk; }4. лБЦДЩК i-ФЩК ЧЩЪПЧ ЖХОЛГЙЙ f (ЛБЛ Ч ЧЩЪЩЧБАЭЕК ЖХОЛГЙЙ, ФБЛ Й Ч ФЕМЕ ЖХОЛГЙЙ f) ЧЙДБ V=f(A1,A2,...,As) ЪБНЕОЙФШ ЖТБЗНЕОФПН РТПЗТБННЩ : AR1=A1; AR2=A2; ... ; ARs=As; l=i; goto f; Li: V=RZ;ЗДЕ l=i ПВПЪОБЮБЕФ l=1 РТЙ РЕТЧПН ПВТБЭЕОЙЙ Л ЖХОЛГЙЙ f, l=2 РТЙ ЧФПТПН ПВТБЭЕОЙЙ Й Ф.Д. оХНЕТБГЙС ПВТБЭЕОЙК НПЦЕФ ВЩФШ ЧЩРПМОЕОБ Ч РТПЙЪЧПМШОПН РПТСДЛЕ Й ФТЕВХЕФУС ДМС ЧПЪЧТБЭЕОЙС Ч ФПЮЛХ ЧЩЪПЧБ У РПНПЭША ПРЕТБФПТПЧ switch Й goto Li; (ЗДЕ Li ЕУФШ L1 РТЙ РЕТЧПК ЪБНЕОЕ, Li ЕУФШ L2 РТЙ ЧФПТПК ЪБНЕОЕ Й Ф.Д.)5. чУФБЧЙФШ НПДЙЖЙГЙТПЧБООПЕ ФЕМП ЖХОЛГЙЙ f Ч ЛПОГЕ ЖХОЛГЙЙ main.дМС ЙММАУФТБГЙЙ ЙЪМПЦЕООПЗП ТБУУНПФТЙН ОЕУЛПМШЛП ЧБТЙБОФПЧ ТЕБМЙЪБГЙЙ РТПЗТБННЩ ЧЩЮЙУМСАЭЕК ЖХОЛГЙА бЛЛЕТНБОБ, ЛПФПТБС ПРТЕДЕМСЕФУС ФБЛ: + X+1, ЕУМЙ N=0 | X, ЕУМЙ N=1, Y=0, | 0, ЕУМЙ N=2, Y=0, A(N,X,Y)= | 1, ЕУМЙ N=3, Y=0, | 2, ЕУМЙ N=>4, Y=0, + A(N-1,A(N,X,Y-1),X), ЕУМЙ N#0, Y#0; ЗДЕ N,X,Y - ГЕМЩЕ ОЕПФТЙГБФЕМШОЩЕ ЮЙУМБ.уМЕДХАЭБС РТПЗТБННБ ЧЩЮЙУМСЕФ ЖХОЛГЙА бЛЛЕТНБОБ У ЙУРПМШЪПЧБОЙЕН ТЕЛХТУЙЧОПК ЖХОЛГЙЙ ackr Й ЧУРПНПЗБФЕМШОПК ЖХОЛГЙЙ smacc: /* ТЕЛХТУЙЧОПЕ ЧЩЮЙУМЕОЙЕ ЖХОЛГЙЙ бЛЛЕТНБОБ */ # include main () /* ЧЩЪЩЧБАЭБС */ { int x,y,n,t; /* ЖХОЛГЙС */ int ackr(int, int, int); scanf("%d %d %d",&n,&x,&y); t=ackr(n,x,y); printf("%d",t); } int smacc( int n,int x ) /* ЧУРПНПЗБФЕМШОБС */ { switch (n) /* ЖХОЛГЙС */ { case 0: return(x+1); case 1: return (x); case 2: return (0); case 3: return (1); default: return (2); } } int ackr( int n, int x, int y) /* ТЕЛХТУЙЧОБС */ { int z; /* ЖХОЛГЙС */ int smacc( int,int); if(n==0 || y==0) z=smacc(n,x); else { z=ackr(n,x,y-1); /* ТЕЛХТУЙЧОЩЕ */ z=ackr(n-1,z,x); } /* ЧЩЪПЧЩ ackr(...) */ return z; }нПДЙЖЙГЙТХС ЖХОЛГЙЙ main Й ackr Ч УППФЧЕФУФЧЙЙ У ЙЪМПЦЕООЩН НЕФПДПН РПМХЮЙН УМЕДХАЭХА РТПЗТБННХ: /* ьЛЧЙЧБМЕОФОБС ОЕТЕЛХТУЙЧОБС РТПЗТБННБ */ /* ДМС ЧЩЮЙУМЕОЙС ЖХОЛГЙЙ бЛЛЕТНБОБ */ #include #include int main() { typedef struct st { int i,j,k,z,lr; struct st *pst; } ST; ST *u, *dl=NULL; int l,x,y,n; int smacc(int,int); int an,ax,ay,rz,t; scanf("%i %i %i",&n,&x,&y); an=n;ax=x;ay=y;l=1; /* - ЪБНЕОБ ЧЩЪПЧБ - */ goto ackr; /* t=ackr(n,x,y); */ l1: t=rz; /* - - - - - - - - */ printf("\n %d ",t); goto jackr; /* ОБЮБМП ЖТБЗНЕОФБ ЪБНЕОСАЭЕЗП ЖХОЛГЙА ackr */ ackr: u=( ST *) malloc( sizeof (ST) ); u->i=an; u->j=ax; u->k=ay; u->lr=l; u->pst=dl; dl=u; if (an==0||ay==0) dl->z=smacc(an,ax); else { an=dl->i; /* - ЪБНЕОБ ЧЩЪПЧБ - */ ax=dl->j; /* */ ay=dl->k-1; /* z=ackr(n,x,y-1); */ l=2; /* */ goto ackr; /* */ l2: dl->z=rz; /* - - - - - - - - */ an=dl->i-1; /* - ЪБНЕОБ ЧЩЪПЧБ - */ ax=rz; /* */ ay=dl->j; /* z=ackr(n-1,z,x); */ l=3; /* */ goto ackr; /* */ l3: dl->z=rz; /* - - - - - - - - */ } rz=dl->z; /* - - - - - - - - */ an=dl->i; /* */ ax=dl->j; /* ЪБНЕОБ */ ay=dl->k; /* */ l=dl->lr; /* ПРЕТБФПТБ */ u=dl; /* */ dl=u->pst; /* return z ; */ free(u); /* */ switch(l) /* */ { case 1: goto l1; /* */ case 2: goto l2; /* */ case 3: goto l3; /* */ } /* - - - - - - - - */ jackr: } int smacc( int n,int x ) /* ЧУРПНПЗБФЕМШОБС ЖХОЛГЙС */ { switch (n) { case 0: return(x+1); case 1: return (x); case 2: return (0); case 3: return (1); default: return (2); } }[ оБЪБД | пЗМБЧМЕОЙЕ ]

Comments: info@citmgu.ru

Copyright © CIT

Соседние файлы в папке Программирование на языке СИ - Громов