time limit: 1000ms memory limit: 65536k 有疑問?點這裡^_^
給定乙個函式 f(a, b, c):
如果 a ≤ 0 或 b ≤ 0 或 c ≤ 0 返回值為 1;
如果 a > 20 或 b > 20 或 c > 20 返回值為 f(20, 20, 20);//前兩個條件注意,輸入的時候就可以解決掉
如果 a < b 並且 b < c 返回 f(a, b, c−1) + f(a, b−1, c−1) − f(a, b−1, c);
其它情況返回 f(a−1, b, c) + f(a−1, b−1, c) + f(a−1, b, c−1) − f(a-1, b-1, c-1)。
看起來簡單的乙個函式?你能做對嗎?
輸入包含多組測試資料,對於每組測試資料:
輸入只有一行為 3 個整數a, b, c(a, b, c < 30)。
對於每組測試資料,輸出函式的計算結果。
1 1 1242 2 2
很有趣的一道題,一開始我看到遞迴兩字想也沒想直接敲了個遞迴,然後,自然而然的,超時了 回頭想想當時太傻了,這不超時我吃翔啊,於是我想到了打表,可。。這是乙個3元函式,打表難不成要用到3維陣列? 是的,我一查竟然還真有3維陣列,我只能說:學無止境。
#include //遞迴的函式
#include #include #include using namespace std;
int f[21][21][21];
int main()
{ int x,y,z,i,j,k;
for(i=0;i<21;i++)
for(j=0;j<21;j++)
for(k=0;k<21;k++)
{if(i<=0||j<=0||k<=0)
f[i][j][k]=1;
else if(i>x>>y>>z)
{if(x<=0||y<=0||z<=0)
cout<<"1"<20||y>20||z>20)
cout<
銷售(遞迴,打表,檔案操作)
題目描述 農夫 john 正在籌畫從他的穀倉中售出 n 頭奶牛,與此同時也有 n 個農夫想要購買奶牛。每個農夫都有剛好足夠購買一頭奶牛的錢並且將會把買來的這頭奶牛用來 為了減少買來的牛擠不出奶的風險,農夫們每個人都將會購買兩頭不同的奶牛各自一半的產權,然後將獲得每頭牛產奶量的一半。如果將兩種方案中每...
poj1207 遞迴和打表
題意比較難懂 乙個數字x,如果是奇數則x x 3 1,否則x x 2.直到x 1,這個過程所經過的長度叫做 迴圈數 題目給你2個數字i和j,求i和j區間中最大的迴圈數。i可能大於j!我的思路就是遞迴加打表,不過打表不能全打,因為範圍可能會超大,比如 9999 3 1 29998有點大啊,為了防止超出...
關於sg函式打表的理解
博弈的題大多數用sg函式打表找規律 博弈的題大多數用sg函式打表找規律 博弈的題大多數用sg函式打表找規律 記憶話搜尋可以更快 記憶話搜尋可以更快 記憶話搜尋可以更快 定義sg值為0時表示後手必勝,sg為1時為先手必勝。那麼對於每乙個人,都會去查詢使得當前狀態變成sg值為0的情況 那麼就是說,對於多...