Untitled
unknown
plain_text
2 years ago
1.6 kB
10
Indexable
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];
}
}
Editor is loading...
Leave a Comment