Advertisement
Filip13

merenje sa n tegova - backtracking

Apr 18th, 2024
582
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 1.27 KB | Source Code | 0 0
  1. using System;
  2.  
  3. namespace merenje_sa_n_tegova
  4. {
  5.     internal class Program
  6.     {
  7.         static double najmanjaRazlika;
  8.  
  9.         static void Main(string[] args)
  10.         {
  11.             double[] tegovi = UcitajTegove();
  12.             double s = double.Parse(Console.ReadLine());
  13.  
  14.             najmanjaRazlika = s;
  15.  
  16.             Generisi(tegovi.Length, tegovi, 0, 0, s);
  17.             Console.WriteLine(s.ToString("0.00"));
  18.         }
  19.  
  20.         public static void Generisi(int n, double[] tegovi, int i, double suma, double s)
  21.         {
  22.             double razlika = Math.Abs(suma - najmanjaRazlika);
  23.             if (razlika < najmanjaRazlika)
  24.             {
  25.                 najmanjaRazlika = razlika;
  26.             }
  27.  
  28.             if (i == n || suma >= n)
  29.             {
  30.                 return;
  31.             }
  32.  
  33.  
  34.             Generisi(n, tegovi, i + 1, suma, s);
  35.             Generisi(n, tegovi, i + 1, suma + tegovi[i], s);
  36.         }
  37.         public static double[] UcitajTegove()
  38.         {
  39.             int n = int.Parse(Console.ReadLine());
  40.             double[] tegovi = new double[n];
  41.  
  42.             for (int i = 0; i < tegovi.Length; i++)
  43.             {
  44.                 tegovi[i] = double.Parse(Console.ReadLine());
  45.             }
  46.  
  47.             return tegovi;
  48.         }
  49.  
  50.     }
  51. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement