算24 遞迴 演算法學習

2021-10-04 06:31:30 字數 1386 閱讀 7178

問題

給出4個小於10個正整數,你可以使用加減乘除4種運算以及括

號把這4個數連線起來得到乙個表示式。現在的問題是,是否存

在一種方式使得得到的表示式的結果等於24。

這裡加減乘除以及括號的運算結果和運算的優先順序跟我們平常

的定義一致(這裡的除法定義是實數除法)。

比如,對於5,5,5,1,我們知道5 * (5 – 1 / 5) = 24,因此

可以得到24。又比如,對於1,1,4,2,我們怎麼都不能得到

24

輸入

輸入資料報括多行,每行給出一組測試資料,包括4個小於10個正整數。最後一組測試資料中包括4個0,表示輸入的結束,這組資料不用處理。

輸出

對於每一組測試資料,輸出一行,如果可以得到24,輸出「yes」;否則,輸出「no」。

樣例輸入

5 5 5 1

1 1 4 2

0 0 0 0

樣例輸出

yes

no

思路

n個數算24,必有兩個數要先算。這兩個數算的結果,和剩餘n-2個數,就構成了n-1個數求24的問題

列舉先算的兩個數,以及這兩個數的運算方式。

邊界條件:乙個數算24

注意:浮點數比較是否相等,不能用 ==

**

#include

#include

using

namespace std;

double a[5]

;#define eps 1e-6

bool

iszero

(double x)

bool

count24

(double a,

int n)

double b[5]

;for

(int i =

0;i < n-1;

++i)

for(

int j = i+

1;j < n;

++j)if(

!iszero

(a[i]))

}return

false;}

intmain()

return0;

}

遞迴之算24

給出4個小於10的正整數,你可以使用加減乘除以及括號把這四個數字連線起來得到乙個表示式,現在的問題是,是否存在一種方式使得到的結果剛好為24,這裡加減乘除以及括號的運算結果以及優先順序和我們平時的定義一樣,除法是實數除法 例 5 5 5 1 5 5 1 5 24 1 1 4 2 無法得到24 inc...

遞迴 演算法學習

遞迴按照遞迴方式可以分為直接遞迴和間接遞迴 1.直接遞迴 遞迴過程p直接呼叫自己 2.間接遞迴 p包含另乙個過程d,而d又呼叫p 遞迴例項 1.漢諾塔問題 include include void hanoi int n,char a,char b,char c int main void 2.八皇...

遞迴演算法學習

所謂的遞迴函式就是在函式體內呼叫本函式。使用遞迴函式一定要注意,處理不當就會進入死迴圈。遞迴函式只有在特定的情況下使用 比如階乘問題 遞迴演算法測試 10的階乘 function f num else console.log 10 的結果為 f 10 請實現乙個fibonacci函式,要求其引數和返...