Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- using System.Diagnostics;
- namespace SM_06_Farkli_Toplamlar
- {
- class Program
- {
- static int[] Oyun = new int[20]; //20 sayı seçimine kadar elverişlidir.
- static int[] OyunEnYuksek = new int[20];
- static int toplamali = 0; // toplamları en fazla olan durumu tartmak için kullanılmaktadır.
- static int enyuksek = 0;
- static int maxlimit; //Küme içerisindeki sayıların sayısı
- static int maxlimitenyuksek = 4; //Küme içerisindeki sayıların sayısının en fazla kaç olabileceğinin kontrolü için
- static int max; // max'tan küçük için çözüm arıyor. Orjinal soruda 100'den küçük olduğu için işlem 100'e kadar devam ediyor.
- static bool Durum = false; //Kümenin içindeki tüm sayıların 2'li toplamlarının birbirinden farklı olup olmaması durumuna ilişkin doğru/yanlış durumu
- static bool BakBakalim(int[] Oyun, int limit) //Kümenin içindeki tüm sayıların 2'li toplamlarının farklı olup olmadığını bulan fonksiyon.
- {
- int i, j, p = 0, k, t;
- int[] toplam = new int[limit * (limit - 1) / 2];
- for (i = 0; i < limit; i++)
- {
- for (j = i + 1; j < limit; j++)
- {
- toplam[p] = Oyun[i] + Oyun[j];
- p = p + 1;
- if (p > 1)
- {
- for (k = 0; k < p-1; k++)
- {
- if (toplam[p-1] == toplam[k])
- return (false);
- }
- }
- }
- }
- return (true);
- }
- static void EnBuyuguBul(int limit, int a) //belirlenen sayı için en fazla değeri bulunmaktadır.
- {
- if (limit == 3)
- {
- Oyun[0] = max - 1;
- Oyun[1] = max - 2;
- Oyun[2] = max - 3;
- Durum = BakBakalim(Oyun, maxlimit);
- if (Durum == true)
- {
- for (int i = 0; i < maxlimit; i++)
- toplamali += Oyun[i];
- if (enyuksek < toplamali)
- {
- for (int i = 0; i < maxlimit; i++)
- {
- OyunEnYuksek[i] = Oyun[i];
- maxlimitenyuksek = maxlimit;
- }
- enyuksek = toplamali;
- }
- toplamali = 0;
- }
- return;
- }
- for (int i = a; i < max; i++)
- {
- Oyun[limit - 1] = i;
- EnBuyuguBul(limit - 1, i + 1);
- }
- }
- static void Main(string[] args)
- {
- for (int i =10; i < 101; i++)
- {
- enyuksek = 0;
- for (int j = maxlimitenyuksek; j < maxlimitenyuksek+2; j++)
- {
- maxlimit = j;
- max = i;
- EnBuyuguBul(maxlimit, 1);
- }
- Console.Write(i+" | "+maxlimitenyuksek+" ||| ");
- for (int p = 0; p < maxlimitenyuksek; p++)
- Console.Write(" " + OyunEnYuksek[p]);
- Console.WriteLine(" ||| " + enyuksek);
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement