Вы можете указать путь к вашему проекту или решению между «build» и --configuration. Установка его примерно таким образом должна решить вашу проблему:
$(Build.SourcesDirectory)/path/toCSProjOrSln.sln
$(Build.SourcesDirectory)
будут напрямую заменены на что-либо ранее, чтобы вы знали, что находитесь в корне своего репо. Более подробная информация о предопределенных переменных и о dotnet core cli
Без проблем, вот O(1)
решение.
A1 = {};
A2 = {};
sum(A1) == sum(A2) /* == 0 */
ЧТО И ТРЕБОВАЛОСЬ ДОКАЗАТЬ.
Серьезно, одна оптимизация, которую можно сделать (предполагающий, что мы говорим о положительных числах) должна только проверить подмножества меньше или равный sum(A)/2
.
Для каждого элемента в A
существует три опции, который делает его O(3^N)
:
A1
A2
Вот наивное решение в Perl (который считает соответствия, у Вас может быть ранний возврат, если Вы просто хотите протестировать существование).
use List::Util qw/sum/;
my $max = sum(@ARGV)/2;
my $first = shift(@ARGV); # make sure we don't find the empty set (all joking aside) and that we don't cover same solution twice (since elements are unique)
my $found = find($first,0, @ARGV);
print "Number of matches: $found\n";
sub find {
my ($a, $b, @tail) = @_;
my $ret = $a == $b? 1 : 0; # are a and b equal sub-sets?
return $ret unless @tail;
my $x = shift @tail;
$ret += find($a + $x, $b, @tail) if $a + $x <= $max; # put x in a
$ret += find($a, $b + $x, @tail) if $b + $x <= $max; # put x in b
return $ret + find($a, $b, @tail); # discard x
}
Если ответ не, то сумма всех n чисел, по крайней мере, 2^n-1. Таким образом, если n является большим, и числа являются 32-разрядными целыми числами, например, то ответ - почти всегда да. Если n является маленьким, Вы можете, вероятно, "в лоб".
Самый твердый случай, вероятно, когда n - приблизительно 30.
Я думаю, что можно решить его точно так же, как проблема суммы подмножества. Возьмите булеву функцию Q (я, s), который верен, если a0, a1..., ай имеют подмножество, которое суммирует к s и содержит ай. Можно вычислить его для всего я и s, использующий динамическое программирование (это - стандартный подход). Затем можно просканировать все значения Q для s, который имеет больше чем одно истинное значение в его связанной строке.
Если такой s существует, это означает нахождение двух различных подмножеств, которые имеют ту же сумму. Они не могли бы быть непересекающимися, но затем можно удалить общие элементы из каждого набора и получить два непересекающихся набора с равными суммами. Один из них мог бы быть пустым, все же.
Эта проблема, кажется, по крайней мере, так же трудна как СУММА ПОДМНОЖЕСТВА. Если мы можем найти два подмножества A: B = {b1..., BP} и C = {c1..., уравнение} таким образом, что b1 +... +bp =-c1-с... уравнениями, или если мы решаем, что ни один не существует, затем мы решили СУММУ ПОДМНОЖЕСТВА (A) (игнорирование тривиального регистра где 0 ∈ A).
Я не уверен, что Вы подразумеваете под ним, не обязательно для B и C покрыть A, таким образом, проблема автоматически не уменьшается до проблемы суммы подмножества. Проверьте определение СУММЫ ПОДМНОЖЕСТВА.