در ابتدا بایستی تصحیح کنم که در ارسال قبلی فرمول ارائه شده برای سطری مربوط به آرایه پایین مثلثی بوده و فرمول ارائه شده برای ستونی مربوط به آرایه بالا مثلثی می باشد که به اشتباه هر دو فرمول را برای آرایه پایین مثلثی در نظر گرفته بودم.
و اما توضیح بیشتر در مورد سوالتان...
همانطور که ما وقتی می خواستیم آدرس درایه ی (a(i,j را با دانستن آدرس شروع(base) تعیین کنیم کاری که می کردیم این بود که اگر درایه ها به صورت سطری ذخیره شده بودند به تعداد سطر ها تا قبل رسیدن به سطری که درایه a انجا قرار دارد (تا سطر i-1)حرکت می کردیم سپس در سطر i به جلو حرکت می کردیم تا به ستون j برسیم و با اینکار عملا تعداد عناصر قبل از درایه (a(i,j را پیدا می کردیم و آن را در سایز نوع آرایه ضرب می کردیم و در نهایت به اضافه ی base می کردیم تا آدرس درایه ی a به دست آید.
حال با این دید برای ذخیره آرایه پایین مثلثی به روش الف) سطری: برای درایه (a(i,j که یکی از عناصر مهم می باشد و آن را در خانه ی t ام آرایه یک بعدی b ذخیره کرده ایم و t در اصل به معنی چندمین درایه مهم ذخیره شده در آرایه ی b است و در نهایت t برابر خواهد بود با تعداد عناصر مهم در سطر های بالای (a(i,j به اضافه ی تعداد عناصر مهم در خود سطر iام که با محاسبه ی این دو مقدار تعیین می کنیم که درایه a چندمین عنصر ذخیره شده در آرایه ی b خواهد بود.
تعداد عناصر مهم در سطر های بالای (a(i,j=
(i(i-1)/2=1+2+3+...+(i-1
تعداد عناصر مهم درسطر iام که قبل از درایه مورد نظر قرار گرفته اند(خودش نیز حساب میشود)=j
که با ترکیب همان فرمولی به دست می آید که در بالا برای پایین مثلثی در روش سطری بیان شد.
ب) ستونی
تعداد عناصر مهم در ستون های قبل (a(i,j=
...=(n+n-1+n-2+...+n-(j-2
تعداد عناصر مهم در خود ستون jام که بالای درایه مورد نظر قرار گرفته اند(خودش نیز حساب میشود)=n-j+1
که با ترکیب فرمولی به دست می آید که برای پایین مثلثی در روش ستونی می باشد.
با همین طرز فکر برای آرایه بالا مثلثی هم در روش سطری و هم در روش ستونی می توان فرمول هایی را استنتاج کرد.
در آخر امیدوارم که کاملا متوجه شده باشید.