P1192 台階問題(遞推)

2021-09-18 07:16:21 字數 1195 閱讀 8788

題目描述

有n級的台階,你一開始在底部,每次可以向上邁最多k級台階(最少11級),問到達第n級台階有多少種不同方式。

輸入輸出格式

輸入格式:

兩個正整數n,k。

輸出格式:

乙個正整數,為不同方式數,由於答案可能很大,你需要輸出ans mod 100003後的結果。

輸入輸出樣例

輸入樣例#1:

5 2輸出樣例#1:

8ac_code:

way1:

/*

根據最直接規律:f(n) = f(n-1)+f(n-2)+...f(n-k),

直接模擬

*/#include

#define mod 100003

int a[

100005];

intmain()

}printf

("%d\n"

,a[n]);

return0;

}

way2:

/*

進一步找規律,效率明顯提高:

1. n<= k: f(n+1)=f(n)*2;

2. n > k: f(n+1) = f(n)*2 - f(n-k);

*/#include

#define mod 100003

int a[

100005];

intmain()

//a[i] = 2*a[i-1]%mod;

}for

(int i = k+

1; i <= n; i++

)printf

("%d\n"

,a[n]);

return0;

}

way3:

/*

看了一下別人的題解,說可以記憶化爆搜。

但是n=100000時,沒有輸出,提交居然ac,這題資料太水!

*/#include

#define mod 100003

int a[

100005

],k;

intfind

(int x)

a[x]

= sum;

return sum;

}int

main()

P1192 台階問題 遞推

有n級的台階,你一開始在底部,每次可以向上邁最多k級台階 最少1級 問到達第n級台階有多少種不同方式。輸入格式 兩個正整數n,k。輸出格式 乙個正整數,為不同方式數,由於答案可能很大,你需要輸出ansmod100003後的結果。輸入樣例 1 複製 5 2輸出樣例 1 複製 8對於20 20 20 的...

P1192 台階問題

題目描述 有n級的台階,你一開始在底部,每次可以向上邁最多k級台階 最少11級 問到達第n級台階有多少種不同方式。輸入格式 兩個正整數n,k。輸出格式 乙個正整數,為不同方式數,由於答案可能很大,你需要輸出ans mod 100003後的結果。輸入輸出樣例 輸入 1 5 2 輸出 1 說明 提示 對...

P1192 台階問題

遞推問題,要用到遞推式 設f n 為n個台階的走法總數,把n個台階的走法分成k類 第1類 第1步走1階,剩下還有n 1階要走,有f n 1 種方法 第2類 第1步走2階,剩下還有n 2階要走,有f n 2 種方法 第3類 第1步走3階,剩下還有n 3階要走,有f n 3 種方法 第k類 第1步走k階...