Advertisement
Guest User

Soru Maratonu 2016 06. Soru Kod

a guest
Jun 13th, 2017
213
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 3.64 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6. using System.Diagnostics;
  7.  
  8. namespace SM_06_Farkli_Toplamlar
  9. {
  10.     class Program
  11.     {
  12.         static int[] Oyun = new int[20]; //20 sayı seçimine kadar elverişlidir.
  13.         static int[] OyunEnYuksek = new int[20];
  14.         static int toplamali = 0; // toplamları en fazla olan durumu tartmak için kullanılmaktadır.
  15.         static int enyuksek = 0;
  16.         static int maxlimit; //Küme içerisindeki sayıların sayısı
  17.         static int maxlimitenyuksek = 4; //Küme içerisindeki sayıların sayısının en fazla kaç olabileceğinin kontrolü için
  18.         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.
  19.         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
  20.         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.
  21.         {
  22.             int i, j, p = 0, k, t;
  23.             int[] toplam = new int[limit * (limit - 1) / 2];
  24.             for (i = 0; i < limit; i++)
  25.             {
  26.                 for (j = i + 1; j < limit; j++)
  27.                 {
  28.                     toplam[p] = Oyun[i] + Oyun[j];
  29.                     p = p + 1;
  30.  
  31.                     if (p > 1)
  32.                     {
  33.                         for (k = 0; k < p-1; k++)
  34.                         {
  35.                                 if (toplam[p-1] == toplam[k])
  36.                                     return (false);
  37.                         }
  38.                      
  39.                     }
  40.                 }
  41.  
  42.  
  43.             }
  44.             return (true);
  45.         }
  46.  
  47.         static void EnBuyuguBul(int limit, int a) //belirlenen sayı için en fazla değeri bulunmaktadır.
  48.         {
  49.             if (limit == 3)
  50.             {
  51.                 Oyun[0] = max - 1;
  52.                 Oyun[1] = max - 2;
  53.                 Oyun[2] = max - 3;
  54.              
  55.                 Durum = BakBakalim(Oyun, maxlimit);
  56.                 if (Durum == true)
  57.                 {
  58.                     for (int i = 0; i < maxlimit; i++)
  59.                         toplamali += Oyun[i];
  60.                     if (enyuksek < toplamali)
  61.                     {
  62.                         for (int i = 0; i < maxlimit; i++)
  63.                         {
  64.                        
  65.                             OyunEnYuksek[i] = Oyun[i];
  66.                             maxlimitenyuksek = maxlimit;
  67.                         }
  68.                       enyuksek = toplamali;
  69.                     }
  70.                     toplamali = 0;
  71.                 }
  72.                 return;
  73.             }
  74.  
  75.             for (int i = a; i < max; i++)
  76.             {
  77.                 Oyun[limit - 1] = i;
  78.                 EnBuyuguBul(limit - 1, i + 1);
  79.             }
  80.            
  81.         }
  82.         static void Main(string[] args)
  83.         {
  84.  
  85.             for (int i =10; i < 101; i++)
  86.             {
  87.                 enyuksek = 0;
  88.                 for (int j = maxlimitenyuksek; j < maxlimitenyuksek+2; j++)
  89.                 {  
  90.                     maxlimit = j;
  91.                     max = i;
  92.                     EnBuyuguBul(maxlimit, 1);
  93.                 }
  94.                 Console.Write(i+" | "+maxlimitenyuksek+" ||| ");
  95.                 for (int p = 0; p < maxlimitenyuksek; p++)
  96.                     Console.Write(" " + OyunEnYuksek[p]);
  97.                 Console.WriteLine(" ||| " + enyuksek);
  98.            }
  99.            
  100.         }
  101.  
  102.     }
  103.  
  104. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement