1-    خروجی الگوریتم زیر با فراخوانی test (4) چیست؟(( ارشد دولتی 84))

Int test (int n)

{

   Int I;

   If(n>0) i=n;

   Test (--n);

   Cout<

}

1)خروجی تولید نمی کند.   2) 1.2.3.4        3) 0.1.2.3.4     4) 0.1.2.3

 

 

 

 

2-    تابع زیر چه کاری را انجام می دهد؟((ازاد 76))

L(n)=   0                        if   n=1

            L([n/2]) +1        if    n>1  

 

1)نصف عدد داده شده +1 و 13          2) بزرگترین عدد صحیح که 4, 2^L≤n  

3)l=[log n] و 4                            4) 2و 3

 

 

 

3-مقدار f(7) برای تابع زیر برابر است با:  (( دولتی 82 ))

Function f( m:integer):integer;

Begin

      If(m<=)then

            F=m+m+2;

           Else        F=f(m-2)-2

End.

1)-2    2) 0         3)2      4) 4   

 

 

4-شمار فراوانی کد زیر در بدترین حالت چیست؟((ازاد 85))

I=1;  j=n;

Repeat

    K=(i+j) / 2;

    If a[k]<= x  then  i=k+1

                       Else j=k-1;

Until i>j;

1)[log(n+1)]     2)  2+3[log(n+1)]   3)log n    4)2+4[log(n+1)]

 

 

 

5)آنچه در زیر آمده است یک شبه کد اشتباه برای الگوریتمی است که باید متوازن بودن یا نبودن رشته ای از پرانتز ها را تعیین کند: (( دولتی 82))

Declare a character stack

While (more input is available)

   { read a character

      If(the character is a '(')

    Then push it on the stack]

    Else if (the character is a')' and the stack is not empty)

               Then pop a character off the stack

               Else print unbalanced and exit

     }

Print "balanced"

کدامیک از رشته های ناموزان زیر توسط الگوریتم فوق متوازن در نظر گرفته می شوند؟

1)(( )))         2)( )) (  ( )      3)( ) (( ( ) )                4) ((   (  )    ( ))

 

 

6-یک لیست دو طزفه خطی به صورت زیر داده شده است(( دولتی 74))

Type list =↑ node ;

 Node =record

      Element:char;

      Next,prev:list

End;

فرض کنید لیست دارای سر لیست است. پردازه زیر برای کپی کردن این لیست پیشنهاد شده است:

Function copy (l;list):list;

     Var lc:list;

Begin

     Lc=nil;

If l< > nil then

   Begin

             New(lc);

             lc↑.element=l↑.element;

             lc↑.next=copy(l↑.next);

             if l↑.next < > nil then

                      l↑.next↑.prev=l;

end;

copy=lc;

end;

 1)این الگوریتم کاملا درست است.         2)این الگوریتم هیچوقت درست عمل نمی کند.

3)///////////////ممکن است ایچاد خطای زمان اجرا نماید.

4) //////////////فقط برای بعضی از لیستها کاملا درست است.

 

 

7-تابع زیر چه عملی را انجام می دهد؟توضیح اینکهlist نشان دهنده لیستی از اعداد بوده و منظور از تابع head تابعی است که مقدار اولین عنصر در لیست را برمیگرداند و تابع tail لیستی حاوی همه عناصر لیست ورودی به استثنای اولین عنصر را برمی گرداند ((دولتی 76))

Function what (l:list):integer;

Begin

         If l=nil then

             What =(0)

        Else

            If tail (l) ≠ nil then

            What =(head (l)+ what (tail(tail(l))))

            Else

               What =head(l)

End;

1)تعداد عناصر لیست را برمیگرداند.              2)مجموع عناصر در مکان های فرد لیست ورودی را برمیگرداند.

3)تعداد عناصر در مکانهای فرد لیست ورودی را بر میگرداند.

4)مجموع عناصر لیست ورودی را برمیگرداند.

 

8-روش پیمایش درخت دودویی زیر را که به صورت بازگشتی تعریف می شود.1- ریشه ملاقات را visit  می گیریم.2- درخت فرعی سمت راست را پیمایش می کنیم. 3-درخت فرعی سمت چپ را پیمایش می کنیم.بین گره های ملاقات شده توسط روش فوق الذکر وpreoder  و inorder وpostorder وجود دارد؟(( دولتی 71 ))

1) گره های ملاقات شده معکوس گره های ملاقات شده توسط preorder است.

2).//////////////////////////////////////////////////////////////////inorder است.

3)///////////////////////////////////////////////////////////////////postorder است.

4)هیچ ربطی بین گره های ملاقات شده توسط روش های زیر نیست.

 

 

9-در یک گراف جهت دار g=(v,e) وزن همه یال ها برابر است می خواهیم طول کوتاه ترین مسیر ها را از یک راس به نام s را تا بقیه راس ها g بدست آوریم .کدام یک از گزینه های زیر مرتبه یک الگوریتم کارا برای حل این مساله است؟((دولتی 83))

 

1)o(|v|^2)   2)o(|v·|·|E|)    3)o(|V|log|E|)    4)o(|V|·|E|)

 

اگر کسی لا حل این ها مشکل داره بگه تا حل این ها را بذارم