Yahoo奇摩知識+ 將於 2021 年 5 月 4 日 (美國東部時間) 終止服務。自 2021 年 4 月 20 日 (美國東部時間) 起,Yahoo奇摩知識+ 網站將會轉為唯讀模式。其他 Yahoo奇摩產品與服務或您的 Yahoo奇摩帳號都不會受影響。如需關於 Yahoo奇摩知識+ 停止服務以及下載您個人資料的資訊,請參閱說明網頁。

C++ 請問這類題目我該從何下手

http://zerojudge.tw/ShowProblem?problemid=d916

像是這類需要尋找有幾種組合符合題目條件的題目

我該從何下手呢??

可以的話也請給我程式碼

謝謝指教

2 個解答

評分
  • 8 年前
    最佳解答

    這題是單純的DP喔~~~

    F(N)=F(N-1)+F(N-1-M)

    以下是程式碼(可以再加速)

    /**********************************************************************************/

    /* Problem: d916 "4. 高空煙火時間限制" from 99資訊能力競賽全國決賽*/

    /* Language: CPP (337 Bytes) */

    /* Result: AC(4ms, 460KB) judge by this@ZeroJudge */

    /* Author: zj11838 at 2013-06-30 11:54:40 */

    /**********************************************************************************/

    #include<iostream>

    #include<cstring>

    #define MOD 10000

    using namespace std;

    int f(int,int);

    int ans[3001];

    int main(){

    int n,m;

    while(cin>>n>>m){

    memset(ans,0,sizeof ans);

    cout<<f(n,m)%MOD<<endl;

    }

    }

    int f(int n,int m){

    if(n<=0)return 1;

    if(ans[n])return ans[n];

    return ans[n]=(f(n-1,m)+f(n-1-m,m))%MOD;

    }

    2013-06-30 12:12:48 補充:

    順便說一下 如果想要變強的話 就不要到這裡來要答案 就算要想很久也要自己想出來

    參考資料: ME
  • MikeHK
    Lv 5
    8 年前

    我有沒搞錯!

    題目只要結果, 所以只要把數學公式做好, (組合公式用程式計算)

    就好了?! 不是嗎?

    所以如果你能列出公式, 程式就寫好了!

還有問題?馬上發問,尋求解答。