●核電站題解
遞推式if(i>m)
a[i]=2*a[i-1]-a[i-1-m];
if(i==m)
a[i]=2*a[i-1]-1;
if(ia[i]=2*a[i-1];
並把a[0]賦值為0
i是當前的總數,m是核物質
1、當(i2、當(i==m)的時候,只會有一種情況——這i個位置全是核物質,所以要減去1
3、當(i>m)的時候,這時候就要考慮**的情況了下面來討論這個遞推式
我們的思路是拿每一次情況減去這次要減去行不通(**)的情況
因為每一次都考慮前面不行的情況所以接下來迴圈只需要考慮這次不行的情況
總情況為2*a[i-1],圖1如下
我們給第i為設定乙個放和不放的狀態,也就是0和1(1為核物質,0為木有)
前面i-1已經考慮好了,都可以放,所以先不用處理加上這第i位的情況,根據組合原理,第i位兩種情況所以一共2*a[i-1]種情況
接下來就是處理不行(**)的情況
當迴圈到第i位的時候,會**的情況就是前面已經有m-1個1(核物質),但這裡m-1個1的前面那一位一定不是1!
若為1的話早就在前面達到m的情況下已經處理(-)過了
所以前面從開始數一共i-1-m位是可以任意組合 的,01001001…任意,因為前面是不會有核物質**的
根據組合原理到達m個**的一共有前面i-1-m個數的組合,所以減去a[i-1-m]
●源**
#include
using namespace std;
int main()
cout<
}
●題目一、乙個核電站有n個放核物質的坑,坑排列在一條直線上。如果連續m個坑中放入核物質,則會發生**,於是,在某些坑中可能不放核物質。
任務:對於給定的n和m,求不發生**的放置核物質的方案總數。
輸入描述 input description
輸入檔案只一行,兩個正整數n,m( 1輸出描述 output description
輸出檔案只有乙個正整數s,表示方案總數。
樣例輸入 sample input
4 3樣例輸出 sample output
資料範圍及提示
( 1
核電站問題
乙個核電站有n個放核物質的坑,坑排列在一條直線上。如果連續m個坑中放入核物質,則會發生 於是,在某些坑中可能不放核物質。任務 對於乙個核電站有n個放核物質的坑,坑排列在一條直線上。如果連續m個坑中放入核物質,則會發生 於是,在某些坑中可能不放核物質。任務 對於給定的n和m,求不發生 的放置核物質的方...
核電站問題
題目描述 乙個核電站有n個放核物質的坑,坑排列在一條直線上。如果連續m個坑中放入核物質,則會發生 於是,在某些坑中可能不放核物質。任務 對於給定的n和m,求不發生 的放置核物質的方案總數。輸入描述 輸入檔案只一行,兩個正整數n,m 1 n 50,2 m 5 輸出描述 輸出檔案只有乙個正整數s,表示方...
1305 核電站問題
核電站問題 time limit 1 seconds memory limit 32768 k total submit 510 accepted 112 description 乙個核電站有n個放核物質的坑,坑排列在一條直線上。如果連續m個坑中放入核物質,則會發生 於是,在某些坑中可能不放核物質。...