PDA

View Full Version : حلقه هاي تودر تو



farzad_
یک شنبه 02 آبان 1389, 21:32 عصر
با سلام.می خواستم تعدادتکرار دستورt=t+1 را در برنامه زیر بدست بیارم.لطفا کمک کنید.

for(i=1;i<=n;++i)
for(j=i;j<=n;++j)
for(k=1;k<=n;++k)
t=t+1;
لطفا اطه ممكنه با سيگما حل کنید
با تشکر

root88
یک شنبه 02 آبان 1389, 22:11 عصر
سلام فکر کنم یه همچین چیزی میشه البته مطمئن نیستم

http://www.irupload.ir/images/dyttoh0j8zqfyvt9eaxk.jpg

Pouri_sb
یک شنبه 02 آبان 1389, 22:12 عصر
s:سیگما عدد اول حد پایین عدد دوم حد بالا


s ( i=1 , i=n ) s ( j= i, n ) s ( 1 , n ) 1=s(i=1,i=n)s(j=i,n)n= n*[s(i=1,i=n)s(j=i,n)1]=n*[s(i=1,i=n)(n-i)]=n*[[s(i=1,i=n)n]-[s(i=1,i=n)i]]=n*(n2-n(n+1)/2)
تشکر یادت نره :دی

mohsensaghafi
دوشنبه 03 آبان 1389, 14:32 عصر
سلام دوست عزیز.
با توجه به کدی که شما نوشته اید ، همگی قبول داریم که حلقه k در هر بار دور اجرا n بار اجرا می شود. حال حلقه i و j را با هم بررسی می کنیم. جدول زیر تعداد تکرارهای کد های درون حلقه j را با توجه به مقدار i نشان می دهد.


i j
1 n
2 n-1
3 n-2
4 n-3
. .
. .
. .
n 1
-----------------
+ (n(n+1)/2)*n => n/2*(n^2+n) => 1/2 n^3 + 1/2 n^2

حال اگر ما اعداد ستون j را با هم جمع کنیم، تعداد تکرار های حلقه k را به ما می دهد. می دانیم که مجموع اعداد 1 تا n برابر
n*(n+1)/2 می باشد. حلقه k هم به نوبه خود خط t=t+1 را n بار اجرا می کند. پس تعداد اجرای خط مذکور به تعداد گفته شد در بالا می رسد.
موفق و پیروز