PDA

View Full Version : حالات مختلف جمع اعداد



f montazeri
دوشنبه 20 تیر 1390, 18:32 عصر
سلام دوستان
من 10 عدد دارم كه اعداد نامرتب و مختلفي هستند مي خواهم همه حالاتي را كه جمع هر عدد داخل اين 10 عدد برابر 6 مي شود را بدست آورم
اينكه چه حلقه اي بنويسم كه كليه حالات را برايم بدست آورد نمي دانم. ( پس حالات مختلف اعدادي را مي خواهم كه جمع عددها برابر 6 شود
)
ممنون مي شوم كمكم كنيد
با تشكر . گير اينم

Editali
دوشنبه 20 تیر 1390, 18:53 عصر
Random r = new Random();

List<int> list = new List<int>();

for (int i = 0; i < 10; i++)
list.Add(r.Next(10));

// Sort

int max = 0;

List<int> temp = new List<int>();


for (int i = 0; i < 10; i++)
if (list[i] > 6) break;
else temp.Add(list[i]);

while (temp.Count > 0)
{
var newTemp = new List<int>();
newTemp.AddRange(temp);
temp.Clear();
for (int i = newTemp.Count - 1; i > 1; i--)
for (int j = newTemp.Count - 2; j > 0; j--)
if (newTemp[i] + newTemp[j] == 6) ; // Do Something
else if (newTemp[i] + newTemp[j] < 6) temp.Add(newTemp[i] + newTemp[j]);
}


برای اینکه درک برنامه راحت تر باشه از چند متغیر جداگانه استفاده کردم:

یه لیست ساختم و مقادیر رندوم بهشون دادم. لیست رو مرتب کردم(این قسمت رو دیگه ننوشتم) و اون مقادیری رو که مورد نیاز بود رو جدا کردم (کوچکتر از 6) و توی یه لیست دیگه ریختم. هر دفعه چک میشه: اگر طول لیست 0 بود یعنی تموم شده در غیر اینصورت لیست رو تو یه لیست دیگه میریزم و لیست قبلیو پاک میکنم. حالا از آخر به اول لیست رو با تمام مقادیر ممکن چک میکنم و اگر 6 بود یه کاری روش انجام میدم (مثلا چاپش میکنم) در غیر اینصورتنتیجه مقایسه رو که کوچکتر از 6 است رو دوبار تو لیست temp میریزم. تا زمانی که Temp خالی نشده باشه به این کار ادامه میدم.