Итак, в настоящий момент я пишу код для своей последней комп. Sci-бумаги, это требует, чтобы вы краснели на некотором входе на system.in, обрабатываете его, первая строка всегда набор чисел до 25 номеров. За этим следует одиночный N или L, а другой int - цель. Используя этот вход, вы должны найти правильный набор операций (+ и *), который использует значения int для создания цели.Булевы массивы и простой способ попробовать каждую комбинацию
Я использую логический массив, чтобы отслеживать, какие операнды я использую в очень проверке, однако я не уверен, как «переборщить» решение, пробовав каждый другой набор операндов, у меня есть код для проверки каждого но не уверен, что есть простой и простой способ изменить массив, например [0,0,0,0] (0 - false) до [0,0,0,1], [0,0, 1,0], [0,0,1,1] и т. Д.?
Я уверен, что есть действительно простой способ, которым я упускал из виду, но для жизни меня я не уверен, что это такое.
static boolean evlN(int[] input, boolean[]ops, int aim){
boolean run = true, found = false;
int[] used = new int[input.length];
int runs = 0 ,ans = 0;
while(!found && runs < (1 << ops.length)){
//finding all multiplys and doing them first
search:
for(int x = 0; x < ops.length; x++){
if(!ops[x]){
used[x] = input[x] * input[x+1];
//need to stop working out and change the ops
if(used[x] > aim){
run = false;
break;
}
}
}
//once multiplys have been done need to do all the adds
if(run){
for(int x = 0; x < ops.length; x++){
if(ops[x]){
if(used[x] != 0) ans += used[x] + input[x+1];
else if(used[x+1] != 0) ans += input[x] + used[x];
}
if(ans > aim) break;
}
}
if(ans == aim) found = true;
used = new int[input.length];
ans= 0;
runs++;
run = !run;
}
if(found) return true;
else return false;
}
это то, что им с помощью отработать каждый набор операндов и номер я просто пытаюсь изменить булев массив грубой силы ответа
'У меня есть код для проверки каждого набора' ... вы можете показать нам этот код? –
Вы можете использовать бит-набор вместо булевого массива и просто увеличивать его. – shmosel
@shmosel, как вы используете бит набор? я знаю, что вы можете сделать 1 << битс или я ошибаюсь, я не уверен, потому что я никогда с ними не работал до – NexMetu