Untitled

mail@pastecode.io avatar
unknown
plain_text
a month ago
1.6 kB
3
Indexable
Never
using System;

class Program
{
    static void Main(string[] args)
    {
        int n = 2;
        int[] A = {3, 2};
        
        int m = 4;
        int[] P = {3, 8, 17, 11};
        // Create array B
        long[] B = new long[n];
        for (int j = 0; j < n; j++)
        {
            for (int i = 0; i <= j; i++)
            {
                B[j] += (long)(A[i] * Math.Pow(2, j - i));
            }
        }
        
        foreach (var val in B)
        {
            Console.WriteLine(val);
        }
        
        long[] BB = new long[5]{3, 2, 6, 8, 7};
        
        target = 17
        
        0 1 2 3 4 5 6 7 8 9 10 11
        1 0 1 1 1 1 1 1 1 0 0  0
        1 0 1 1 0 1 1 1 1 1 0  1 1
        
        
        foreach (int num in BB) {
            if (IsPossible(B, num))
                Console.Write("Yes ");
            else
                Console.Write("No ");
        }
    }
    
    static bool IsPossible(long[] B, int target) {
        bool[] dp = new bool[target + 1];
        dp[0] = true;
        Console.WriteLine("Target: " + target);
        Console.WriteLine("DP INITITAL: " + string.Join(" ", dp));
        foreach (long b in B) {
            Console.WriteLine("b: " + b);
            for (int i = target; i >= b; i--) {
                Console.WriteLine("i: " + i);
                Console.WriteLine("dp[i - b]" + "["+(i-b)+"] = " + dp[i - b]);
                if (dp[i - b]) {
                    dp[i] = true;
                }
            }
        }
        Console.WriteLine("DP AFTER: " + string.Join(" ", dp));
        return dp[target];
    }
}
Leave a Comment