私は最後のcomp sci紙のコードを書いている瞬間、system.inの入力を赤くする必要があります。最初の行は常に25までの数字の集合。これには、単一のNまたはLと、目的となる別のintが続きます。この入力を使用すると、int値を使用して目的を作成する正しい操作セット(+と*)を見つける必要があります。ブール配列とすべての組み合わせを試す簡単な方法
私はブール配列を使用して、私が非常にチェックしているオペランドを追跡していますが、私はどのようにオペランドのすべての異なるセットを試みることによって解決策を "ブルートフォース"するのかは分かりません。しかし、[0,0,0,0](0は偽)から[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